素数の判定プログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Iseuma14
記事: 54
登録日時: 10年前

素数の判定プログラム

#1

投稿記事 by Iseuma14 » 10年前

C言語勉強中のものです コンパイラは、iPhoneのアプリを使っています
ここまでの知識で何か作ってみようと思い入力された数が素数かどうかを判定するプログラムを作ってみたのですが、なぜか数字を入力だけが表示されて結果が表示されません
原因を教えてくださると嬉しいです

コード:

#include <stdio.h>
int nai();
int main()
{
  	int i;
  	int sosu;
  	
  printf ("数字を入力");
  	scanf ("%d\n",&sosu);
  	
  if (	sosu > 2 && sosu % 2 ==1)
  /*sosuが2以上、かつsosuが奇数の時ループ実行*/
  for (i=3;;i + 2)
  {
    	if (sosu % i == 0)
    		break;
   /*iで素数を割り切れたらループ終了*/
   }
  		 if (sosu == 1)
  		       int nai() ;
  		 if (sosu == 2)
  			printf (" 素数") ;
	if (sosu % 2 == 0)
		int nai();
			if (i ==sosu)
				printf ("素数");
	return 0;    	
}    	
    int nai()
  {
    printf("素数ではない");
   return 0;
  }
    	

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 素数の判定プログラム

#2

投稿記事 by みけCAT » 10年前

作る人 さんが書きました:なぜか数字を入力だけが表示されて結果が表示されません
本当ですか?ideoneおよびwandboxで実行を試みたところ、20行目でエラーが出てコンパイルが通りませんでした。
また、20行目のint nai() ;を {int nai() ;}に、24行目のint nai();を {int nai();}にそれぞれ書き換えて入力3で実行したところ、
「数字を入力素数」と表示されました。
作る人 さんが書きました:原因を教えてくださると嬉しいです
  • int nai();は関数の宣言とみなされて、関数呼び出しは起こらないと予想できる
  • ループ中でiが更新されないため、3以上(int型に収まる範囲)の奇数で、3の倍数ではない数を入力すると無限ループになる
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Iseuma14
記事: 54
登録日時: 10年前

Re: 素数の判定プログラム

#3

投稿記事 by Iseuma14 » 10年前

みけCAT様 ご返信ありがとうございます
なんか改めて見直すと不備がいろいろ出てきたので出直させていただきます
ありがとうございました

かずま

Re: 素数の判定プログラム

#4

投稿記事 by かずま » 10年前

作る人 さんが書きました:なぜか数字を入力だけが表示されて結果が表示されません
原因を教えてくださると嬉しいです
scanf の書式の最後に '\n' を書いてはいけません。
scanf の書式の中の スペースやタブや改行は、入力の連続する 0個以上のスペースや
タブや改行を読み飛ばして、そうでない文字が出てくるまで入力を待ち続けます。

Iseuma14
記事: 54
登録日時: 10年前

Re: 素数の判定プログラム

#5

投稿記事 by Iseuma14 » 10年前

かずまさまご回答ありがとうございます
ほんとですね間違えて入れてました ありがとうございます

閉鎖

“C言語何でも質問掲示板” へ戻る