問題
整数a.bを入力すると100以下のaとbの公倍数を全て書き出し、その個数を教えてくれるプログラムを作成しなさい。
ただし、公倍数がひとつもない場合は"ありません"と表示させること。
例
整数を2つ入力せよ・・・>8 12
100以下の8と12の公倍数は
24 48 72 96
の4個です。
この問題なのですが、公倍数がない場合は出力できたのですが、ある場合にエラーがでてしまい、きっかけも掴めないためどうしようもないです。
先日forについて学んだばかりなので理解できてないのが要因だと思われます。教えていただきたいです。
forやifを使った問題
Re: forやifを使った問題
きっかけを掴むために、公倍数がない場合に出力できたkrgpsrrr さんが書きました:この問題なのですが、公倍数がない場合は出力できたのですが、ある場合にエラーがでてしまい、きっかけも掴めないためどうしようもないです。
というプログラムを、フォーラムルールにあるように
code タグを使って貼り付けてください。
Re: forやifを使った問題
#include<stdio.h>
main()
{
int a, b,i, sum = 0;
printf("整数a,bを入力せよ・・・>");
scanf_s("%d%d", &a, &b);
printf("100以下の%dと%dの公倍数は\n", a, b);
for (i = a; i <= 100; i++)
{
if (i%a == 0 && i%b == 0)
{
sum++;
printf("%d\t", i);
}
}
if (0 < sum )
{
printf("%d\t\nの%d個です。\n", i, sum);
}
else
{
printf("ありません\n", a, b);
}
}
Re: forやifを使った問題
些細なことですが、printf("ありません\n", a, b); は、
「, a, b」が余計ですね。
さらに、for文で a の倍数だけを候補にすると、
b で割り切れるかどうかだけで公倍数の判定ができます。
「, a, b」が余計ですね。
さらに、for文で a の倍数だけを候補にすると、
b で割り切れるかどうかだけで公倍数の判定ができます。
#include <stdio.h>
int main(void)
{
int a, b, sum = 0;
printf("整数 a, b を入力せよ・・・>");
if (scanf("%d%d", &a, &b) != 2) return 1;
printf("100以下の %d と %d の公倍数は\n", a, b);
for (int i = a; i <= 100; i += a)
if (i % b == 0) {
sum++;
printf("%d\t", i);
}
if (sum > 0)
printf("\nの %d個です。\n", sum);
else
printf("ありません\n");
return 0;
}