私は非常に最近、最初のコーディング言語であるcを学び始めました。私はProject Eulerから問題3を解決しようとしており、そうするためにこれを書きました。このコードは、600851475143, の最大の素因数を識別するためのものですが、私は理解できない奇妙な戻り値を得ています。誰でも知っている理由は?-1(0xFFFFFFFF)の戻り値を取得するのはなぜですか?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 1, a = 0, prime = 0;
for(i = 1; i < 600851475143; i += 2) {
for(a = 0; a <= i/2; a++) {
if(i % a == 0) {
break;
}
if(a = i/2) {
if(600851475143 % i == 0) {
prime = i;
}
}
}
}
printf("%d\n", prime);
return 0;
}
ヒント:600851475143は、ストレージにどのように多くのビットを必要とするのでしょうか? – JAB
別の問題は 'if(a = i/2)'です。これは 'a'への代入であり、' i/2'が非ゼロである限り真です。おそらくあなたはそれが 'if(a == i/2)'であることを意図していました。これは比較です。 –
'-Wall'をコンパイラオプションに設定すると、ほとんどの間違いを知ることができます。 – iBug