以下のように2以上の整数値 n (2≦n≦10,000)を入力すると,n 以下の素数の個数と最大の素数を求め,これらを出力するプログラムを作成しました。
これを修正して正の偶数値 n(2≦n≦10,000)を入力すると,足して n になる素数の組の数を求め,出力するプログラムを作りたいと思います。
どのように修正したらよいかお教えください。
#include <stdio.h>
//2から入力した整数値nまでの数値を入れる配列
//配列の中をすべて0にするよう初期化
int a[10001] = {0};
//素数かどうかを判断し、素数の個数を数える関数
int sieve(int n) {
int i, j;
//2からnまでの整数を並べる
for (i = 2; i <= n; i++) {
if (a[i] == 1) continue;
for (j = 2; j <= (n / i); j++) a[i * j] = 1;
}
//素数の個数を調べる
i = 0;
for (j = 2; j <= n; j++) {
if (!a[j]) a[i++] = j;
}
return i;
}
int main(int argc, char *argv[]){
int n;
int size;
printf(“整数値は?:”);
scanf("%d", &n);
//nまでの素数の個数をsizeに代入
size = sieve(n);
//n 以下の素数の個数を出力
printf("%d\n",size);
//素数の配列の最後の数値(n 以下の最大の素数)
printf("%d\n",a[size-1]);
return 0;
}
sieve関数に呼び込んだ後はaに素数が貯まっているのでmainでn以下の素数について足してnになる素数の組を調べるプログラムはどのように作成したらよいのでしょうか。
No.1ベストアンサー
- 回答日時:
まず、ちょっと確認したいんだけど、
> 正の偶数値 n(2≦n≦10,000)を入力すると,足して n になる素数の組の数を求め
とアッサリ書いてるんですが、問題は
> すべての偶数値 n はいくつかの素数の組として書き表せる
って数学的に保証されてるんだろうか。その辺貴方や課題出した人ってどう考えてる?
これ、厄介だし、数学的に保証されてない事をプログラミングするのは「不可能」ですよ。どの辺の定理をバックグラウンドにしてプログラムしよう、って思ってんだろ。
なおよ。
> 全ての 2 よりも大きな偶数は2つの素数の和として表すことができる
だったら、これはゴールドバッハの予想、っつって性器の、もとい世紀の大難問だ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語での引数の省略方法
-
「指定されたキャストは有効で...
-
#define _CRT_SECURE_NO_WARNIN...
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
複数桁10進数の*桁目だけを抽出...
-
if と配列の組み合わせ
-
実数の整数部,小数部の取得
-
Arduinoのプログラムにエラーが...
-
数字列を3桁ごとにカンマで区切...
-
system関数がうまくいかない
-
アスタリスクでダイヤ型を作る
-
main関数以外での結果の表示?
-
read関数をノンブロッキングで...
-
プログラミング☆
-
c++でテンプレートのコードでわ...
-
ラップ関数とはどんなものですか?
-
c言語の配列を使ってサイコロを...
-
このプログラミング誰か教えて...
-
ファイル操作を教えてください
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
複数桁10進数の*桁目だけを抽出...
-
へんな現象
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
if と配列の組み合わせ
-
C言語での奇数の和
-
C言語 配列と関数の練習問題
-
ラップ関数とはどんなものですか?
-
(int *)の意味
-
C言語
-
実数の整数部,小数部の取得
-
足して100になるような乱数のア...
-
卒業研究でよく分からないとこ...
-
数字列を3桁ごとにカンマで区切...
-
c言語
-
std::set<int> で、ある値が何...
-
比較回数と交換回数表示について
おすすめ情報