#include <iostream>
using namespace std;
int prim(long long x) {
int s = 0;
for(long long i = 1; i <= x ; i++) {
if(x % i == 0) {
s++;
}
}
if(s == 2) {
return 1;
}
return 0;
}
int main() {
long long A = 600851475143;
long long i = 2;
long long C = 0;
while(i < (A/2)) {
while(A % i == 0 ) {
A = A/i;
if(i > C) {
C = i;
}
}
i++;
}
if(prim(C)) {
cout<<C;
}
return 0;
}
這是我爲Project Euler problem 3使得代碼。我不明白爲什麼當我運行它時,它給了我1471.這是一個很好的答案,但不是最大的答案。但如果我改變i = 1471
它給了我正確的答案6857 ...問題在哪裏?爲什麼它不是「自動地」給我6857的答案,而是從2開始的1471答案?Project Euler#3的這段代碼有什麼問題?
PS。我知道我不必在任何地方都使用long long
。
任何你需要這麼多行的理由?這迫使我滾動更多,我討厭,特別是因爲我有兩個滾動條在對方內,這使得它真的很不舒服。 – Deduplicator
用較少的行推動編輯。 – Whitebird
@Deduplicator你總是可以讓別人爲你滾動 – 4pie0