プロが教えるわが家の防犯対策術!

3000000以下の素数を降順に表示するプログラムをつくりたいのですが、int mainのところがわかりません。
#include <iostream>
int PRIME(int m)
int main()
{
int m, j;
for(m = 3000000; m <= 2; m--)
}
int prime( int n )
{
int i;
for ( i = 2; i < n; i++ )
{
if ( n % i == 0 )
{
return 0;
}
}
return 1;
}
誰か教えていただけないでしょうか?
よろしくお願いします。

A 回答 (6件)

for(m = 3000000; m <= 2; m--)


forループが間違ってますので1回もループを回りません
    • good
    • 0

ちょっと検索すればこんなソースが


http://c-kadai.sakura.ne.jp/index.php?itemid=17

まぁ、現在作成中のプログラムが完成したら試しにこちらも実行してみてください。
たぶん実行時間がかなり違うはず。
    • good
    • 0

とりあえず、素数を求めるアルゴリズムは「エラトステネスのふるい」が有名だし処理時間も短いと思います。


降順に表示するのは素数がすべてわかった後に別途表示をすれば良いので、それほど基本処理には係わりません。

まずは「エラトステネスのふるい」を検索して勉強してください。
    • good
    • 0

> わからないのでごしてきのほうお願いしかす。



ダメダメです。勉強してください。

「prime(m) が 1 ならば m を出力」を for-loop でくるみます。
    • good
    • 0

#1> 素数の観点から、小さいほうから値を求めていけいないと難しいですよ。



違います。呈示された関数 prime は求める順とは関係ありません。

int prime(int n) は nが素数なら1を返すので、

int prime(int);

int main()
{
for( int m = 3000000; m <= 2; m--)
 if ( mが素数 ) /* ここでprimeを呼ぶ */
  mを出力する /* coutで書く */
}

こんだけのこと。

この回答への補足

ありがとうございます。
今こんな感じなんですが、わからないのでごしてきのほうお願いしかす。
#include<stdio.h>
int PRIME(int m);
void main()
{
int m, k;
for(m = 3000000; m < 2; m--)
{
if(m = 1)
k = PRIME(m);
}
printf("%d\n",k);
}
int PRIME(int m)
{
int i;
for ( i = 2; i < m; i++ )
{
if ( m % i == 0 );
{
return 0;
}
}
return 1;
}

補足日時:2009/11/28 19:09
    • good
    • 0

まず、素数を昇順で表示するプログラムを作ってください。


素数の観点から、小さいほうから値を求めていけいないと難しいですよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!