#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