分解質因數就是將乙個合數分解成幾個質數(也叫素數)的乘積的形式。
如:6=2*3
基本思路:
從i=2到sqrt(n),遍歷,如果n%i==0,則表示i是n的乙個因子,然後再看這個i是不是素數(即質數),如果是,則列印,並使n = n/i。然後i再從2開始。
bool isprime(int
m) return true;
}void foo(int n)
}//if(n % i == 0)
} printf("%d", n);
}
第一種實現,**寫的太複雜。
(1)由於從2開始整除的,沒有必要判斷被n整除的這個數是不是質數,這個數必然是質數。
(2)沒有必要每次都從2開始。因為,已經從2開始過了,如果上一次迴圈時,n都不能被2整除,則後面的肯定不會被2整除。
這個時間顯然無法接受啊。
程式3 分解質因數
題目 將乙個大於2正整數分解質因數。例如輸入6,6 23,輸入90,90 2335.程式分析 對 n 進行分解質因數,應先找到乙個最小的質數 k,然後按下述步驟完成 1 如果這個質數恰等於 n,則說明分解質因數的過程已經結束,列印出即可。2 如果 n k,但 n 能被 k 整除,則應列印出 k 的值...
014 分解質因數
題目 將乙個正整數分解質因數。例如 輸入90,列印出90 2 3 3 5。程式分析 對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完成 1 如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。2 如果n k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新的正整...
1020 分解質因數
每乙個大於等於2的自然數,均可寫成乙個或多個質數的乘積,例如 2 2 20 2 2 5這種將乙個整數分割成若干個質數之積的操作叫做分解質因數。現在,給你乙個整數n,請你編寫乙個程式,對其分解質因數。輸入為一行,正整數n,保證1 n 2147483647 1輸出n的質因數分解形式,格式為 n p1 e...