• ベストアンサー

このプログラムみてもらえますか?

課題は標準入力から正整数aを読み込み、aが素数であるか否か判定するプログラムを作れ、です。 #include <stdio.h> int main(void) { int a,b,c; for(;;){ printf("正整数を入力して下さい。\n"); scanf("%d",&a); c=a%b; for(b=2;b=a-1;b=b+1){ if(c==0) printf("素数でない。\n"); break; } printf("素数です。\n"); break; return(0); } } コンパイルはできますが、実行すると9が「素数です」と表示されます^^; よろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.4

いっぱい間違ってるので、ストレートに回答を。 #include <stdio.h> int main(void) {   int a,b,c;   printf("正整数を入力して下さい。\n");   scanf("%d",&a);   /* 正整数と言ってもゼロとかマイナスを入れられると困る */   if (c < 1) {     printf("入力ミス\n");     return 0;   }   c = a; /* 1を入れられた時のおまじない */   for (b = 2;b < a;b++) {     c = a % b;     if (c == 0) {       printf("素数でない。\n");       break;     }   }   /* ループ終了時、cが0なら上で「素数でない」と表示した筈 */   if (c != 0) {     printf("素数です。\n");   }   return 0; }

その他の回答 (3)

回答No.3

ダメダメです。 #include <stdio.h> int main(void) {   int a,b,c;   for(;;){     printf("正整数を入力して下さい。\n");     scanf("%d",&a);     c=a%b; ← このときbはいくつ?     for(b=2;b=a-1;b=b+1){ ← 条件式 b=a-1 って?       if(c==0) ← cの値はループの外で確定済         printf("素数でない。\n");       break; ← 最初のループで即脱出     }     printf("素数です。\n");     break; ← 無限ループになってない     return(0); ← 上のbreakのせいでここには来ない   } } 勉強し直し。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.2

c=a%b; for(b=2;b=a-1;b=b+1){ が逆です。 for(b=2;b=a-1;b=b+1){ c=a%b; それから、内部変数は初期化してから使いましょう。 c=a%b; for(b=2;b=a-1;b=b+1){ では、bが初期化されていません。

  • elngr
  • ベストアンサー率25% (1/4)
回答No.1

プログラム全部は理解していませんが、最初にc=a%b;した時に bの値が決まっていないということに気がつきました。

関連するQ&A

専門家に質問してみよう