首页 > 学院 > 开发设计 > 正文

基础练习 分解质因数

2019-11-08 02:47:26
字体:
来源:转载
供稿:网友

问题描述  求出区间[a,b]中所有整数的质因数分解。输入格式  输入两个整数a,b。输出格式  每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)样例输入3 10样例输出3=34=2*25=56=2*37=78=2*2*29=3*310=2*5提示  先筛出所有素数,然后再分解。数据规模和约定  2<=a<=b<=10000解答代码

#include<iostream>#include<string>#include<cstring>#include<set>#include<algorithm>#include<cmath>using namespace std;const int N = 9999;bool PRime[N];void init(){	fill(prime+2, prime+N, true);	for(int i = 2; i<=sqrt(N); ++i)	{		if(prime[i])		{			for(int j = i+i; j<N; j+=i)			{				prime[j] = false;			}		}	}}int main(){	init();	int p[N],i,j,k,index=0;	for(i=0;i<N;i++)	{		if(prime[i]==true)			p[index++]=i;	}	int n,m;	cin>>n>>m;	for(i=n;i<=m;i++)	{		cout<<i<<"=";		if(prime[i])			cout<<i<<endl;		else		{			index=0;			k=i;			int flag=1;			while(true)			{				if(k%p[index]==0)				{					if(flag)					{						cout<<p[index];						flag=0;					}					else						cout<<"*"<<p[index];					k/=p[index];				}				else				{					index++;				}				if(k==1)					break;			}			cout<<endl;		}	}}	


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表