素数 引数

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

素数 引数

#1

投稿記事 by monsutonton » 4年前

素数なら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;
		}
	}
}

chop.chop
記事: 36
登録日時: 4年前

Re: 素数 引数

#2

投稿記事 by chop.chop » 4年前

まず、include<stdio.h>の前に#を付けましょう。

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

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

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

monsutonton
記事: 29
登録日時: 4年前

Re: 素数 引数

#3

投稿記事 by monsutonton » 4年前

ありがとうございます。
条件を追加してTUREで返せば大丈夫ですか?

chop.chop
記事: 36
登録日時: 4年前

Re: 素数 引数

#4

投稿記事 by chop.chop » 4年前

エラトステネスの篩を利用した、入力された数以下の素数を表示させる関数を書いて、
それを14行目の分岐に入った後で実行すればいいと思います。

monsutonton
記事: 29
登録日時: 4年前

Re: 素数 引数

#5

投稿記事 by monsutonton » 4年前

了解しました。
エラトステネスの篩があることを初めて知りました。
努力してみます。

閉鎖

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