进阶实验2-3.4 素因子分解 (20分)
解题思路:
1、由小到大寻找N的素因子i,
1)当N%i==0时,让N=N/i,计数,循环直到N%i !=0
2)此时判断N是否是1,如果N==1则直接退出,若N!=1 则继续寻找下一个素因子,重复操作1
#include <stdio.h> #include <math.h> typedef enum {false,true } bool; bool IsPrime(int n) { if(n==0||n==1) return false; if(n>2) { int i; for(i=2; i<=sqrt(n)+1; i++) { if(n%i==0)return false; } } return true; } int main() { int x; scanf("%d",&x); int i,cnt; printf("%d=",x); int flag=0; if(x==1) printf("1"); else { for(i=2; i<=x; i++) { if(x%i==0) { if(IsPrime(i)) { flag=1; printf("%d",i); cnt=0; while(x%i==0) { x/=i; cnt++; } if(cnt>1) printf("^%d",cnt); if(x!=1) { printf("*"); } else break; } } } } return 0; }
勤能补拙,熟能生巧