#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;
}
Đây là mã tôi đã thực hiện cho Project Euler problem 3. Tôi không hiểu tại sao khi tôi chạy nó, nó mang lại cho tôi 1471. Đó là một câu trả lời hay nhưng không phải là câu trả lời lớn nhất. Nhưng nếu tôi thay đổi i = 1471
nó mang lại cho tôi câu trả lời đúng 6857 ... Vấn đề ở đâu? Tại sao nó không "automagically" cho tôi câu trả lời 6857 tốt nhưng 1471 khi tôi bắt đầu từ 2?Điều gì sai với mã này cho Project Euler # 3?
PS. Tôi biết tôi không phải sử dụng long long
ở mọi nơi.
Bất kỳ lý do nào bạn cần có nhiều dòng? Điều đó buộc tôi phải di chuyển nhiều hơn, điều mà tôi ghét, nhất là khi tôi có hai thanh cuộn bên trong nhau, điều này làm cho nó thực sự không thoải mái. – Deduplicator
Đã đẩy bản chỉnh sửa có ít dòng hơn. – Whitebird
@Deduplicator bạn luôn có thể yêu cầu ai đó làm một cuộn cho bạn – 4pie0