題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。
分析:從1到N先找出最小的質因數,如果等於本身,那么說明只有一個質因數,如果不是,那么將該質因數打印出來,並將N/該質因數作為新的N值進行運算。
設計步驟:
1、如果這個質數恰等於n,則說明分解質因數的過程已經結束,打印出即可。
2、如果n!=k,但n能被k整除,則應打印出k的值,並用n除以k的商,作為新的正整數你n,重復執行第一步。
3、如果n不能被k整除,則用k+1作為k的值,重復執行第一步。
代碼實現:
#python版 def count_number(value): n = 2 while n <= value: while value != n: # 如果value等於n,說明只有一個質因數,否則就進行循環 if value % n == 0: # 說明n為一個質因數 print(n) value = value / n # 更新下一輪value的值 else: break n += 1 print(n-1) # 打印出最后一個值
#Cpp版 //將一個正整數分解質因數 int main() { int i,n; printf("Please input an integer!\n"); scanf("%d",&n); for(i=2;i<=n;i++) { while(n!=i) //若i=n,則質因數就是n本身 { if(n%i==0) //若i是質因數,則打印出i的值,並用商給n賦新值 { printf("%d\n",i); n=n/i; } else break;//若不能被i整除,則算下一個i } } printf("%d\n",n); //這里是打印最后一個質因數,也就是等於i時的那個 return 0; }