project eulerの3問目に以下のようなものがありました。
13195 の素因数は 5, 7, 13, 29 である.
600851475143 の素因数のうち最大のものを求めよ.
以下のコードは自力でやってみたものです。
#include <stdio.h> //judge関数の定義// int judge(long long x){ int y = 0; for (long long j=2; j<x; j++) { if (x%j == 0) { y = 1; break; } } return y; } int main(void){ long long i, j; long long num; long long maxprime = 1; printf("整数を入力してください。\n"); scanf("%lld", &num); for (i=1; i<=num; i++) { if (num%i == 0) { j = judge(i); if (j == 0) { maxprime = i; } } } printf("最大の素因数は%lldです。\n", maxprime); return 0; }
問題を解くにあたり考えたアルゴリズムは、
値を入力させる→約数を見つける→約数内で素数を見つける
というものです。
しかし、このコードでビルドしたところnumが比較的小さい値の時はしっかりと最大の素因数が求まるのですが、600851475143などの大きい値の時、何も起こらなくなってしまいます。初心者なのでコードに一貫性がないのは重々承知です。どなたか原因を教えていただけると幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/14 14:21 編集