演算法提高 8-1因式分解(c語言)
阿新 • • 發佈:2019-01-07
**問題描述
設計演算法,使用者輸入合數,程式輸出若個素數的乘積。例如,輸入6,輸出23。輸入20,輸出22*5。**例:
資料規模和約定
輸入資料中每一個數在int表示範圍內。
法一:程式程式碼如下
#include<stdio.h> int isprime(int n)//判斷素數 { int flag=1; if(n==2) return 1; if(n%2==0||n==1) return 0;//1和偶素不是素數 for(int i=3;i<n;i+=2) { if(n%i==0){ flag=0; break; } } return flag; } int main() { int n,flag=1; scanf("%d",&n); if(isprime(n)) { printf("%d",n); } else { for(int i=2;i<=n;i++) { while(n%i==0&&isprime(i)) { if(flag) { printf("%d",i); flag=0; } else { printf("*%d",i); } n/=i; } } } return 0; }
法二:程式程式碼如下
#include<stdio.h> int main() { int n,x = 1,flag = 1; scanf("%d",&n); while(n != 1) { x++; while(n % x == 0) { if(flag) { flag =0; printf("%d",x); } else { printf("*%d",x); } n /= x; } } return 0; }