私はプロジェクトオイラーの問題23を解決しています。私は単純なロジックを使用しました。正しい答えが得られていますが、プログラムの実行には非常に長い時間がかかります。
コードを最適化する方法はありますか?
私は最初に2つの豊富な数の合計であるすべての数を計算し、次にそれを全体の合計から差し引きます。
int factorsum(int);
int main()
{
int i, j, s = 0, t, m;
for (i = 24; i <= 28123; i++) //sum of 2abundant nos start from 24
{
for (j = 12; j <= i / 2; j++) {
t = factorsum(j);
if (t > j) {
m = i - j;
t = factorsum(m);
if (t > m) {
s = s + i;
break;
}
}
}
}
j = 0;
for (i = 1; i <= 28123; i++)
j = j + i;
printf("\n%d", (j - s));
return 0;
}
int factorsum(int j) //checking sum of factors
{
int k, s = 0;
for (k = 1; k <= (j / 2); k++) {
if (j % k == 0) {
s = s + k;
}
}
return s;
}