ページ 11

素数 引数

Posted: 2015年9月18日(金) 19:15
by monsutonton
素数ならTRUE,ないならFALSEを返す関数を作成する。この値を呼び出して、1から入力された素数をすべて出力するプログラム。
全体的におかしく、全て出力するプログラムがわかりません。

コード:

include <stdio.h>
#define TRUE 1
#define FALSE 0

int prime(int suti);

int main(void)
{	
	int su,i,result;
	
	printf("数字を入力してください。\n");
	scanf("%d",&su);
	
	if(prime(su) == TRUE)
	{
		printf("入力された数値は素数です。\n");
		printf("%d\n",su);
	}
	else
	{
		printf("入力された数値は素数ではありません。\n");
	}
	
	return 0;
}

int prime(int su)
{
	int i;
	if(su<=1)
	{
		return FALSE;
	}
	else
	{
		i = 2;
		while(su%i!=0)
		{
			i++;
		}
		if(su<= i)
		{
			return TRUE;
		}
		else
		{
			return FALSE;
		}
	}
}

Re: 素数 引数

Posted: 2015年9月18日(金) 20:50
by chop.chop
まず、include<stdio.h>の前に#を付けましょう。

このコードの中のprimeという関数は素数判定としては機能しています。

あなたが書くべきなのは、入力が素数であった場合に、それ以下の素数を全て出力する関数です。
こちらはエラトステネスの篩で調べて見て下さい。

ちなみに入力された数を引数にエラトステネスの櫛を実行した後、それを元に素数判定する方がnが大きくなった時には高速かと思います。

Re: 素数 引数

Posted: 2015年9月18日(金) 21:47
by monsutonton
ありがとうございます。
条件を追加してTUREで返せば大丈夫ですか?

Re: 素数 引数

Posted: 2015年9月18日(金) 22:10
by chop.chop
エラトステネスの篩を利用した、入力された数以下の素数を表示させる関数を書いて、
それを14行目の分岐に入った後で実行すればいいと思います。

Re: 素数 引数

Posted: 2015年9月18日(金) 22:32
by monsutonton
了解しました。
エラトステネスの篩があることを初めて知りました。
努力してみます。