【C++】2023.2.11打卡第十天_28(素数算法)

三百题蓝桥省一战神 2023-02-11 13:01:33

分解质因数

题目描述

给定一个区间 [a,b],请你求出区间 [a,b] 中所有整数的质因数分解。

输入描述

输入共一行,包含两个整数 a,b。

2≤a≤b≤103。

输出描述

每行输出一个数的分解,形如 k=a1​×a2​×a3​⋯(a1​≤a2​≤a3​⋯,k也是从小到大的)(具体可看样例)

输入输出样例

示例

输入

3 10

输出

3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5

 我的解答

#include  <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;

void solve(int x)   //分解质因子 
{
	for(int i=2;i<=x;i++)
	{
		while(x%i==0)     //找因子 
		{
			cout<<i;       //找到因子,输出因子 
			x/=i;         //除因子,下一个循环继续找,找到是素数为止 
			if(x!=1) cout<<"*";   // 输出到1为止 
		}
	}
}
int a,b;
int main()
{
	cin>>a>>b;
	for(int i=a;i<=b;i++)
	{
		cout<<i<<"=";
		solve(i);
		cout<<endl;	 
	}
	return 0;
 } 

总结

试除法的效率不高,数据规模不大时可用这种方法。关键点:1.找因子:x%i==0,其中i就是x的因子  2.去除因子:n/=i

...全文
9 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

30,348

社区成员

发帖
与我相关
我的任务
社区描述
打造最热爱学习的高校社区,帮助大家提升计算机领域知识,带大家打比赛拿奖,提高自我,希望大家共同创造良好的社区氛围。
社区管理员
  • 川川菜鸟
  • 亡心灵
  • 星辰菜鸟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

监督大家学习,每日学习打卡,以投稿形式打卡。扫码关注公众号,可加入粉丝群和领取大量资源。

试试用AI创作助手写篇文章吧