将其用质因子的乘积表示并输出2到100之间所有结果,格式为:2=2 3=3 4=2*2......100=2*2*5*5
将其用质因子的乘积表示并输出2到100之间所有结果,格式为:2=2
3=3
4=2*2
......
100=2*2*5*5
~
程序代码:#include<stdio.h>
#include<string.h>
#define MAX 100
char IsPrime[MAX+1]={0};
int prim[MAX+1]={0};
int first_factor[MAX+1]={0}; //用来保存第一个数的因子,默认质数的值为0。是结合题意的,欧拉筛本来不需要~
int main()
{
int i=0;
int j=0;
int f=0;
int num=0;
int num_factor=0;
memset(first_factor,0,sizeof(first_factor)); //初始化内存块清零
for (i=2;i<=MAX;++i)
{
if (!IsPrime[i])
prim[num++]=i;
for (j=0,f=i*prim[j];j<num&&f<=MAX;++j,f=i*prim[j])
{
IsPrime[f]=1;
first_factor[f]=prim[j];
if (i%prim[j]==0)
break;
}
printf("%d=",i); //上面是用欧拉筛求素数部分的代码,下面是结合题意整合输出
num_factor=i;
while (first_factor[num_factor])
{
printf("%d*",first_factor[num_factor]);
num_factor/=first_factor[num_factor];
}
printf("%d\n",num_factor);
}
puts("");
return 0;
}[此贴子已经被作者于2017-10-28 13:51编辑过]
