题目描述
求出区间[a,b]中所有整数的质因数分解。
提示
先筛出所有素数,然后再分解。
数据规模和约定
2< =a< =b< =10000
输入
输入两个整数a,b。
输出
每行输出一个数的分解,形如k=a1a2a3…(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<stdio.h>
#include<math.h>
int Prime(int n)
{
int t;
t=(int)(sqrt(n));
for(int i=2;i<=t;i++)
{
if(n%i==0) return 1;
else return -1;
}
return 0;
}
int resolve(int n)
{
int i,t,k,j,a[100];
int sum=1;
k=0;
j=n;
for(i=2;i<=n;i++)
{
if(n%i==0)
{
a[k]=i;
sum=sum*a[k];
n=j/sum;
k++;
i=1; //i必须赋值为1,才能继续从2开始
}
}
printf("%d=",j);
for(t=0;t<k;t++)
{
printf("%d",a[t]);
if(t<k-1)
printf("*");
}
printf("\n");
k=0;
return 0;
}
int main()
{
int a,b,i;
scanf("%d %d",&a,&b);
for(i=a;i<=b;i++)
{
if(Prime(i))
resolve(i);
else
printf("%d=%d\n",i,i);
}
return 0;
}
注意:可以先通过Prime()函数筛选,再通过resolve分解可得