|
> うまくいきません、
何がうまくいかないのか分かりません。教えてください。
> どこが悪いか教えてください
ソースはきちんとインデントを取りましょう。
素数とは何かを考えてください(分からなければ調べましょう)。
正の整数である必要があります。
負数および 0 は不正ですし,1 は例外と考えるべきだと思います。
元のアルゴリズムを尊重して,以下のようにしてみました。
あらゆる数を入力して,結果を報告してくださいまし。#include <assert.h>
#include <stdio.h>
int IsPrime(unsigned n)
{
unsigned u;
assert(n);
if (n <= 1) {
return 0;
}
for (u = 2; u <= n-1; ++u) {
if (n % u == 0) {
return 0;
}
}
return 1;
}
int main(void)
{
for (;;) {
unsigned n;
puts("入力された数が素数か調べます。");
printf("数を入力してください :");
if (scanf("%u",&n) != 1) {
break;
}
if (IsPrime(n)) {
printf("%u は素数です。\n\n", n);
} else {
printf("%u は素数ではありません。\n\n", n);
}
}
return 0;
}
|