如何实现将任意一个整数分解为素数之积
最近学算术基本定理,想用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; }