每乙個大於等於2的自然數,均可寫成乙個或多個質數的乘積,例如:
2=2
20=2*2*5
這種將乙個整數分割成若干個質數之積的操作叫做分解質因數。現在,給你乙個整數n,請你編寫乙個程式,對其分解質因數。
輸入為一行,正整數n,保證1
<
n<
2147483647
'>1輸出n的質因數分解形式,格式為 n=p1(e1)p2(e2)p3(e3).... 其中,p1、p2、p3、……為組成n的各個質因子,
滿足p1 < p2 < p3 < ...;e1、e2、e3、……分別為p1、p2、p3、……在n中的指數。
例如:
20=2*2*5
應該輸出成:
20=2(2)5(1)
n的大於sqrt(n)的質因子至多有乙個。(sqrt(n)指n的開方取整)
20
20=2(2)5(1)
#includeusingnamespace
std;
bool mark[5000001
];int prime[5000001
];int num[5000001]=;
intprimesize;
void
init()
}}int
main()
while(n%prime[i]==0
); }
}for(int i=0;i)
}return0;
}
總是有兩個用例通不過,很奇怪。
014 分解質因數
題目 將乙個正整數分解質因數。例如 輸入90,列印出90 2 3 3 5。程式分析 對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完成 1 如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。2 如果n k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新的正整...
程式4 分解質因數
分解質因數就是將乙個合數分解成幾個質數 也叫素數 的乘積的形式。如 6 2 3 基本思路 從i 2到sqrt n 遍歷,如果n i 0,則表示i是n的乙個因子,然後再看這個i是不是素數 即質數 如果是,則列印,並使n n i。然後i再從2開始。bool isprime int m return tr...
程式3 分解質因數
題目 將乙個大於2正整數分解質因數。例如輸入6,6 23,輸入90,90 2335.程式分析 對 n 進行分解質因數,應先找到乙個最小的質數 k,然後按下述步驟完成 1 如果這個質數恰等於 n,則說明分解質因數的過程已經結束,列印出即可。2 如果 n k,但 n 能被 k 整除,則應列印出 k 的值...