2-07. 素因子分解(20)

来源:互联网 发布:ubuntu 拨号 编辑:程序博客网 时间:2024/05/15 14:55

2-07. 素因子分解(20)



# include <stdio.h># include <math.h>int check(int n){int i;for(i = 3; i <= sqrt(n); i ++){if(! (n % i))return 0;}return 1;}int s[300];int main(){long int N, n;int i, j, cou=1;int r[300]={0};scanf("%ld",&N);if(N == 1){printf("1=1\n");return 0;}elsen = N;s[0] = 2;//get 素数集for(i = 3; i < 1500; i += 2){if( check(i)){s[cou ++] = i;}}for(i = 0; n != 1; )//拆分{if(! (n%s[i]) ){r[i] ++;n = n/s[i];}else{i ++;}}printf("%ld=",N);//格式输出for(j = 0; j < 300; j ++){if(r[j] == 0)continue;else{if(j == i)//最后一位,没有*号{if(r[j] == 1)printf("%d",s[j]);elseprintf("%d^%d",s[j],r[j]);}else//非最后一位{if(r[j] == 1)printf("%d*",s[j]);elseprintf("%d^%d*",s[j],r[j]);}}}return 0;}


0 0