用java或C語言找到10000000以內的完美數 - tw511教學網

文章推薦指數: 80 %
投票人數:10人

用java或C語言找到10000000以內的完美數. 2020-10-02 12:00:01. 首先要知道完美數的計算公式,如果用迴圈來寫會超時的計算公式:如果2^p-1為素數, ... 技術文章»用java或C語言找到10000000以內的完美數 用java或C語言找到10000000以內的完美數 2020-10-0212:00:01 首先要知道完美數的計算公式,如果用迴圈來寫會超時的計算公式:如果2^p-1為素數,那麼(2^p-1)*(2^(p-1))為完美數,只需要去遍歷p就可以了10000000萬的話,遍歷到30就妥妥的夠了,注意結束條件不要因為相乘導致越界。

下面是java和C語言實現的程式碼,語法相識,所以差不多。

目前世界上已知的完美數為49個,整型範圍內只有5個,如果沒有其他方法可以打表輸出,下面是整型範圍內的5個完美數 6 28 496 8128 33550336 Java程式碼 packagezhh_2; importjava.lang.Math; publicclasswanMeiShu{ staticintPrime(intn){ if(n==1) return0; intk=(int)Math.sqrt(n); for(inti=2;i<=k;i++) if(n%i==0) return0; return1; } publicstaticvoidmain(String[]args){ for(inti=2;i<1000;i++){ intk=(int)(Math.pow(2,i)-1); if(Prime(k)==1){ intx=(int)(Math.pow(2,i-1)*k); if(x<=10000000) System.out.println(x); elsebreak; } } } } C語言程式碼 #include #include intPrime(intn){ if(n==1) return0; intk=(int)sqrt(n); for(inti=2;i<=k;i++) if(n%i==0) return0; return1; } intmain() { for(inti=2;i<1000;i++){ intk=(int)(pow(2,i)-1); if(Prime(k)==1){ intx=(int)(pow(2,i-1)*k); if(x<=10000000) printf("%d\n",x); elsebreak; } } }  



請為這篇文章評分?