#include <stdio.h>
#include <stdlib.h>
#define MAX_N 60000
#define MAX_ITEM 7500
int primes[MAX_ITEM]= {0},numbers[MAX_ITEM]= {0};
int gen_primes(int n,int *primes);
void gen_factors(int n,int m,int *prime,int *num);
void print(int m,int *primes,int *num);
int main()
{
int m,n;
printf("please Enter N:");
scanf("%d",&n);
if(n<2||n>MAX_N)
{
printf("N must be between 2 and %d\n",MAX_N);
}
else
{
m=gen_primes(n,primes);
gen_factors(n,m,primes,numbers);
print(m,primes,numbers);
}
return 0;
}
int gen_primes(int n,int *primes)
{
int i,j,k,num=0;
for(j=2; j<=n; j++)
{
for(i=2; i<=n; i++)
if(j%i==0)
break;
if(i==j)
{
primes[num]=j;
num++;
}
}
return num-1;
}
void gen_factors(int n,int m,int *prime,int *num)
{
int A,i,j;
A=n;
for(i=0; i<=m; i++)
{
if(A%primes[i]==0)
{
A=A/primes[i];
num[i]=num[i]+1;
}
}
}
void print(int m,int *primes,int *num)
{
int i;
for(i=0; i<=m; i++)
{
if(primes[i]!=0)
{
if(i!=m-1)
{
if(num[i]!=0)
printf("%d^%d*",primes[i],num[i]);
else
printf("%d*",primes[i]);
}
else
{
if(num[i]!=0)
printf("%d^%d",primes[i],num[i]);
else
printf("%d",primes[i]);
}
}
}
}
12-26
07-15
05-10
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交