problem 3:
the prime factors of 13195 are 5,7,13 and 29.
what is the largest prime factor of the number 600851475143.
問題3:
13195的質因數為5,
7,13和
29。600851475143最大的質因數是多少?
分析:600851475143超過了32位
int所能表示的範圍,這裡用
double。
思路1:因為分解質因數是唯一的,用該數去依次除以每個整數(直到不能除盡這個整數),然後用商再去試除下個整數,直到商等於某個整數。
思路2:用該數先除以
2直到不能除盡,若結果為
1,則返回
2,若不為
1,用商再依次除以大於等於
3的奇數(直到除盡該奇數),當商等於某個奇數時,返回該奇數,即為最大
質因數。
思路3:再思路
2基礎上,可以先將大於等於
3的奇數換成事先計算好的質數表,當有限的質數表除盡而依然未找到最大質因數時,按思路
2順序除以大於質數表中最大數的奇數。
思路2程式如下: 解:
#include #include #include using namespace std;
typedef int int;
typedef char char;
typedef void void;
typedef double double;
#define print printf
#define dprint printf
double maxprimefactor(double n)
if(fabs(n-1.0) < numeric_limits::epsilon())
return 2.0;
//除盡大於等於3的奇數
for(i=3.0; i<=max; i+=2.0)
tem = n / i;
while(fabs(tem - (floor(tem)) < numeric_limits::epsilon()))
if(fabs(n-1.0) < numeric_limits::epsilon())
return i;
} return -1.0;
}int main(int argc, char *argv)
return 0;
}
尤拉計畫第12題
三角形數數列是通過逐個加上自然數來生成的。例如,第7個三角形數是 1 2 3 4 5 6 7 28。三角形數數列的前十項分別是 1,3,6,10,15,21,28,36,45,55,讓我們列舉出前七個三角形數的所有約數 1 1 3 1,3 6 1,2,3,6 10 1,2,5,10 15 1,3,5...
尤拉計畫第21題
記d n 為n的所有真因數 小於n且整除n的正整數 之和。如果d a b且d b a,且a b,那麼a和b構成乙個親和數對,a和b被稱為親和數。例如,220的真因數包括1 2 4 5 10 11 20 22 44 55和110,因此d 220 284 而284的真因數包括1 2 4 71和142,因...
尤拉計畫第22題
在這個46k的文字檔案names.txt 右擊並選擇 目標另存為 中包含了五千多個姓名。首先將它們按照字母序排列,然後計算出每個姓名的字母值,乘以它在按字母順序排列後的位置,以計算出姓名得分。例如,按照字母序排列後,位於第938位的姓名colin的字母值是3 15 12 9 14 53。因此,col...