プロが教えるわが家の防犯対策術!

大体作成できたのですがエラーが出てきてデバッグができません。どこをどう修正すればいいのでしょうか?僕としてはsqrtが必要かどうかわからないのですが…。
#include <stdio.h>
#include <math.h>

int main(void)
{
int i, j, k, tmp,sqrt;
int number1, number2, total;

printf("数1:");
scanf("%d", &number1);
printf("数2:");
scanf("%d", &number2);
total = 0;

if (number1 > number2)
{
tmp = number1;
number1 = number2;
number2 = tmp;
}

if (number1 % 2 == 0)
{
number1++;
}

for (i=number1; i<=number2; i+=2)
{
k=0;
for (j=3; j<=sqrt(i); j+=2)
{
if (i%j==0)
{
k=1;
break;
}
}

if (k==0)
{
total += i;
}
}
printf("素数の和:%d\n", total);
return 0;
}

A 回答 (1件)

えーっと


エラーどうこうについて回答するまえに
コードを理解するためにいくつか質問して良いですか?


if (number1 % 2 == 0)
{
number1++;
}
これはなぜ行っているのでしょうか?
number1が2だった場合もインクリメントされちゃいますが
2は素数なので和の対象になるのでは?


for (i=number1; i<=number2; i+=2)
ここの増分はなぜ2なのでしょうか?
number1からnumber2までの数字で
素数を足して行くんですよね?
増分を1にしないと数字飛ばしちゃいますよ?


for (j=3; j<=sqrt(i); j+=2)
ここにいたってはなんでこうなっているのかよく分からないです
ごめんなさい


コンパイルエラーが出ているのであれば
そのエラーを書いてください
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!