アプリ版:「スタンプのみでお礼する」機能のリリースについて

C++での、素数の表を作成するプログラムについての質問です。
配列を使用して、2~71までの素数を表に埋め込みたいのです。
プログラム本体はここまで出来ているのですが、
素数を求める計算の方法がイマイチわかりません。

#include<iostream>
#include <iomanip>
using namespace std;
#define N 20
int main()
{
int arry[N];


/*********************************
ここでforを用いた反復で計算を行う
**********************************/


/*********************
配列変数の内容を出力
*********************/
for(int i=0;i<N;i++)
cout << "+--" ;
cout << "+\n" ;
for(int i = 0; i < N; i++ )
cout << "|" << setw(2) << arry[i] ;
cout << "|\n" ;
for(int i = 0; i < N; i++ )
cout << "+--" ;
cout << "+\n" ;
return 0;
}

for文を使用した反復構造でarry[N]に2~71までの数字をいれていきたいです。
お願いします。
なお、
int arry[N]={2,3,5,7…}

arry[0]=2;
arry[1]=3;
arry[2]=5;
…のように入力してはいけないのです。

A 回答 (2件)

http://ideone.com/zqSVi

#平方根?エラトステネスの篩?そんなもんは知らん。

この回答への補足

忘れていました。
isPrimeや、bool、currentなどを使わずにプログラムを作成したいのです。

補足日時:2010/07/20 22:31
    • good
    • 0
この回答へのお礼

ありがとうございました。参考になります。

お礼日時:2010/07/20 22:33

 基本的に、ある整数Nが素数であるかどうかを判定したければ、


 (1)2以上N以下の総ての整数で割りきれるかどうかをチェック
 (2)√N以下の総ての素数で割りきれるかどうかをチェック
 のどちらかをすればよいです。
 もし、割りきれる数があれば素数ではないし、いずれの素数でも割りきれなければ素数です。
 これを2重ループ(外側はi=2~72。内側は今まで見つかった素数の配列をスキャン)で構成すれば良いわけです。

 が・・・・補足の
>isPrimeや、bool、currentなどを使わずにプログラムを作成したいのです。
 の意味が不明です。
 No1さんの回答をみての補足だと思いますが・・・

 No1.さんの回答は、(1)をごくごく素直に実行しています。
 isPrimeやcurrentは単なる変数名ですし、boolはC++における基本型です。
 まさか、変数も基本型も一切使用せずにプログラムを組めとは言わないでしょうね?そんなの不可能ですから。
    • good
    • 0
この回答へのお礼

詳しい説明をありがとうございます。
currentなどは変数名でしたね^^;
よく見ていないで勝手に自分がわからないものと判断していました。
失礼しましたー。

お礼日時:2010/07/20 23:22

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