如何实现将任意一个整数分解为素数之积
最近学算术基本定理,想用C程序实现它,即输入任意正整数(>1),将该整数分解为素数之积,例如10=2*5,12=2*2*3,18=2*3*3,按类似格式输出结果。。想了很久没能做到完全分解,希望高手能给予指导,一起讨论,不甚感激。。。。
写一段代码抛砖引玉吧。没有使用筛法求素数是不想消耗太多的内存
程序代码:#include<stdio.h>
#define SIZE 10000
int prime[SIZE];
void init()
{
int i, a, n;
prime[0] = 2;
for(n = 1, a = 3; n < SIZE; a += 2)
{
for(i = 0; i < n; i++)
if(a % prime[i] == 0) break;
if(i == n) prime[n++] = a;
}
}
void print(int a)
{
int i;
printf("%d = ", a);
for(i = 0; i < SIZE && a % prime[i]; i++);
if(i == SIZE)
{
printf("over flow.\n");
return;
}
printf("%d", prime[i]);
for(a /= prime[i]; a > 1 && i < SIZE; i++)
for(; a % prime[i] == 0; a /= prime[i])
printf(" * %d", prime[i]);
printf("\n");
if(a > 1) printf("over flow.\n");
}
int main()
{
int a;
init();
printf("input number : ");
scanf("%d", &a);
print(a);
return 0;
}










膜拜。。。兄弟平时看些什么书?有关算法的。