出産前後の痔にはご注意!

1~1000,1001~2000の間に素数が何個あるかプログラムを用いて調べよ。
急ぎです。よろしくお願いします。

質問者からの補足コメント

  • 素数からプログラムで求めたいです

      補足日時:2017/11/28 00:15

A 回答 (10件)

>プログラムを用いて調べよ


そのプログラムは?
    • good
    • 1
この回答へのお礼

C言語です

お礼日時:2017/11/28 13:27

>>素数からプログラムで求めたいです


>もう日本語も不自由じゃないですか

「定数で持つんじゃなくて、素数の判定もプログラムでやって、指定した範囲にいくつの素数があるのかカウントしたい」という意図は通じていますが…。
丸投げだと希望する回答が付くかどうかは回答者次第でしょうねぇ。
たいてい、『掲示された問題に対して正当な答え』ではあるが『課題に対しては正しくない答え』を書く、クイズみたいな流れになりますけど。
#7の方の方法には膝を打たせて頂きました。
sosu()が0か1を返しますので、retで受けずにctr += sosu(i)でも、また面白いなと。

素数の求め方…とかは他の方も回答していますし、ネット検索でも見つけられるでしょう。
愚直にループを繰り返して「どの値でも割りきれない」と判定してもいいわけですし。


>逆に先生に褒められると思いますからw

そういうお茶目に先生もいるかも知れませんね。
# 私はほぼ独学だったのでそういう先生に会ったことはありませんが。

ということで、頑張ってください。
# 知恵袋だとご丁寧に回答してくれる人もいるみたいですけどね。(内容精査はしないので知らんが)
    • good
    • 0

>素数からプログラムで求めたいです


もう日本語も不自由じゃないですか

No4,No7の方のプログラム使えばいいですよ
逆に先生に褒められると思いますからw
    • good
    • 1

No4の方を参考にしてつくりました。


#include<stdio.h>
int sosu(int num)
{
switch(num){
case 2: case 3: case 5: case 7: case 11:
case 13: case 17: case 19: case 23: case 29:
case 31: case 37: case 41: case 43: case 47:
case 53: case 59: case 61: case 67: case 71:
case 73: case 79: case 83: case 89: case 97:
case 101: case 103: case 107: case 109: case 113:
case 127: case 131: case 137: case 139: case 149:
case 151: case 157: case 163: case 167: case 173:
case 179: case 181: case 191: case 193: case 197:
case 199: case 211: case 223: case 227: case 229:
case 233: case 239: case 241: case 251: case 257:
case 263: case 269: case 271: case 277: case 281:
case 283: case 293: case 307: case 311: case 313:
case 317: case 331: case 337: case 347: case 349:
case 353: case 359: case 367: case 373: case 379:
case 383: case 389: case 397: case 401: case 409:
case 419: case 421: case 431: case 433: case 439:
case 443: case 449: case 457: case 461: case 463:
case 467: case 479: case 487: case 491: case 499:
case 503: case 509: case 521: case 523: case 541:
case 547: case 557: case 563: case 569: case 571:
case 577: case 587: case 593: case 599: case 601:
case 607: case 613: case 617: case 619: case 631:
case 641: case 643: case 647: case 653: case 659:
case 661: case 673: case 677: case 683: case 691:
case 701: case 709: case 719: case 727: case 733:
case 739: case 743: case 751: case 757: case 761:
case 769: case 773: case 787: case 797: case 809:
case 811: case 821: case 823: case 827: case 829:
case 839: case 853: case 857: case 859: case 863:
case 877: case 881: case 883: case 887: case 907:
case 911: case 919: case 929: case 937: case 941:
case 947: case 953: case 967: case 971: case 977:
case 983: case 991: case 997: case 1009: case 1013:
case 1019: case 1021: case 1031: case 1033: case 1039:
case 1049: case 1051: case 1061: case 1063: case 1069:
case 1087: case 1091: case 1093: case 1097: case 1103:
case 1109: case 1117: case 1123: case 1129: case 1151:
case 1153: case 1163: case 1171: case 1181: case 1187:
case 1193: case 1201: case 1213: case 1217: case 1223:
case 1229: case 1231: case 1237: case 1249: case 1259:
case 1277: case 1279: case 1283: case 1289: case 1291:
case 1297: case 1301: case 1303: case 1307: case 1319:
case 1321: case 1327: case 1361: case 1367: case 1373:
case 1381: case 1399: case 1409: case 1423: case 1427:
case 1429: case 1433: case 1439: case 1447: case 1451:
case 1453: case 1459: case 1471: case 1481: case 1483:
case 1487: case 1489: case 1493: case 1499: case 1511:
case 1523: case 1531: case 1543: case 1549: case 1553:
case 1559: case 1567: case 1571: case 1579: case 1583:
case 1597: case 1601: case 1607: case 1609: case 1613:
case 1619: case 1621: case 1627: case 1637: case 1657:
case 1663: case 1667: case 1669: case 1693: case 1697:
case 1699: case 1709: case 1721: case 1723: case 1733:
case 1741: case 1747: case 1753: case 1759: case 1777:
case 1783: case 1787: case 1789: case 1801: case 1811:
case 1823: case 1831: case 1847: case 1861: case 1867:
case 1871: case 1873: case 1877: case 1879: case 1889:
case 1901: case 1907: case 1913: case 1931: case 1933:
case 1949: case 1951: case 1973: case 1979: case 1987:
case 1993: case 1997: case 1999:
return 1;
default:
return 0;
}
}

int main(){
int i;
int ret;
int ctr;
ctr = 0;
for(i=1; i<=1000; i++){
ret = sosu(i);
if (ret == 1){
ctr++;
}
}
printf("1~1000の素数は%d個です\n",ctr);
ctr = 0;
for(i=1001; i<=2000; i++){
ret = sosu(i);
if (ret == 1){
ctr++;
}
}
printf("1001~2000の素数は%d個です\n",ctr);
return 0;
}

ーーーーーーーーーーーーーーーーーーーー
実行結果です。
1~1000の素数は168個です
1001~2000の素数は135個です
    • good
    • 5

素数を求めるアルゴリズムには何を使いますか?



 2からn-1までの数で割り切れるかを求める方法。
 2からn-1までの2を除く奇数で割って割り切れるかを求める方法。
 2から√nの小数点以下を切り捨てた値までで割って割り切れるかを求める方法。

…他にもあるけどどうする?
    • good
    • 0

先ずは、「素数」を理解して下さい。


これだけの範囲であれば、総当たりで良いでしょう。
1-7は無条件で素数として、対象はそれ以上の奇数で良いでしょう。
除数は検査値の平方根値までで良いです。
素数でなければ、商となる整数で検査済みだからです。
これらの手順を、先ずは日本語の文章で整理してください。
後は、プログラム言語に変換するだけです。
    • good
    • 0

>まともな回答がついているのは見たことありませんよ



なんか呼ばれたような気がする……



#include <stdio.h>

int main(int argc, char[] *argv)
{
 int Sosuu1[] = {
  2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
  73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173,
  179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281,
  283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409,
  419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541,
  547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659,
  661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809,
  811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941,
  947, 953, 967, 971, 977, 983, 991, 997
 };
 int Sosuu2[] = {
  1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123,
  1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283,
  1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439,
  1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571,
  1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721,
  1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877,
  1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, 1999
 };

 printf("1~1000の間の素数は%d個です。\n", (sizeof(Sosuu1) / sizeof(int)));
 printf("1001~2000の間の素数は%d個です。\n", (sizeof(Sosuu2) / sizeof(int)));
 printf("https://ja.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0 … を参照しました!!\n");

 return 0;
}


全角スペースでインデントしているのでご利用の際は水平タブに置き換えてくださいね。
これで課題もバッチリ!! C言語カテゴリなんで、まぁ大丈夫でしょう。
# プログラムを用いて…というのが、プリプロセッサが求めてくれていますし。
    • good
    • 6

プログラム言語を指定しないと、Haskellみたいな普通じゃない言語の回答貼られても文句言えませんけどね。

    • good
    • 0
    • good
    • 0

私がここを利用し始めてから


様々なこういった課題や宿題の丸投げを見てきましたが
まともな回答がついているのは見たことありませんよ
    • good
    • 2

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

このQ&Aと関連する良く見られている質問

Qマチンの公式による円周率のプログラム

この前、学校の授業でマチンの公式による円周率の計算をするプログラムを以下の方針で考えました。ここで、atanを求めるユーザー定義関数を作りたいのですが、途中までは考えたのですが以下の空欄の部分が、よく分かりません。
【方針】1.数列a(k)=±(1/2k-1)*x^(2k-1)(k=1,2,…)の漸化式を作る。(a(k)のkは添え字です)
2.a(1)+a(2)+a(3)+…+a(N)の値をatan(x)の近似値とする。
(1,2,3,…,Nは添え字です)

(プログラムの一部)→atanの近似値を求める関数
double Atan(double x)
{
double s=_,a=_,kk;
int k; //添え字用
for(k=1;k<=x;k++)
{s_; //多分式が入る。
kk=(double)k;
a_; //多分式が入る。
}
return s;
}

下線部に適当な文字や式を入れて、この関数を完成させてください。(ヒントをください)
※できれば、このプログラムの形は変えないで、下線部のみを埋めてください。

この前、学校の授業でマチンの公式による円周率の計算をするプログラムを以下の方針で考えました。ここで、atanを求めるユーザー定義関数を作りたいのですが、途中までは考えたのですが以下の空欄の部分が、よく分かりません。
【方針】1.数列a(k)=±(1/2k-1)*x^(2k-1)(k=1,2,…)の漸化式を作る。(a(k)のkは添え字です)
2.a(1)+a(2)+a(3)+…+a(N)の値をatan(x)の近似値とする。
(1,2,3,…,Nは添え字です)

(プログラムの一部)→atanの近似値を求める関数
double Atan(double x)
{
double s=_,a=_,k...続きを読む

Aベストアンサー

グレゴリ級数
Σ[n=0,∞]((-1)^n / (2n + 1)) * x^(2n + 1)
グレゴリ級数をN項まで展開する場合、n=0~N-1になります。
Σ[n=0,N-1]((-1)^n / (2n + 1)) * x^(2n + 1)

問題と成っている関数の下線を埋めてもプログラムは完成しません。
根本的に間違えがあります。

グレゴリ級数を素直に書いた場合。
double MyAtan(double x)
{
 double s = (1)___;
 int n;

 for (n = 0; n < N; n ++) {
  s (2)___
 }
 return s;
}
と言う形状が一般的です。
Σは総和です。
Σ[n=0,N-1]((-1)^n / (2n + 1)) * x^(2n + 1)
の場合、
> for (n = 0; n < N; n ++) {
の様に0~N未満までループさせます。
この時の各nで式「((-1)^n / (2n + 1)) * x^(2n + 1)」を計算し全てを加算したのが総和です。
よって、(2)の下線には式「((-1)^n / (2n + 1)) * x^(2n + 1)」が入る事になります。
「s = s + 加算式」or 「s += 加算式」
また、Σ[n=0,N-1]の初項(n=0)は0.0に対してn=0時の数値を加算したものと考えられます。
よって、(1)には0.0が入ります。
double MyAtan(double x)
{
 double s = 0.0;
 int n;

 for (n = 0; n < N; n ++) {
  s += 式
 }
 return s;
}
式には「((-1)^n / (2n + 1)) * x^(2n + 1)」が入ります。
乗数はpow関数を使用します。
・テクニックとして
初項がxと分かっているので
double MyAtan(double x)
{
 double s = x; <-- 初項(n=0)分が計算済み
 int n;

 for (n = 1; n < N; n ++) { <-- n = 1と成っている
  s += 式
 }
 return s;
}
とすると複雑な計算の回数が1回減り、少し速くなります。
この関数を大量に実行しない限り、測定誤差の範囲ですが。
また、「(-1)^n 」の部分も条件文にし、powを使わない方が速くなります。

まずは素直に作ってみるのが良いでしょう。

グレゴリ級数
Σ[n=0,∞]((-1)^n / (2n + 1)) * x^(2n + 1)
グレゴリ級数をN項まで展開する場合、n=0~N-1になります。
Σ[n=0,N-1]((-1)^n / (2n + 1)) * x^(2n + 1)

問題と成っている関数の下線を埋めてもプログラムは完成しません。
根本的に間違えがあります。

グレゴリ級数を素直に書いた場合。
double MyAtan(double x)
{
 double s = (1)___;
 int n;

 for (n = 0; n < N; n ++) {
  s (2)___
 }
 return s;
}
と言う形状が一般的です。
Σは総和です。
Σ[n=0,N-1]((-1)^n / (2...続きを読む

QC言語でのフィボナッチ数列の表示

1~40番目のフィボナッチ数列を全て表示するプログラミングを作成せよ。 但し、f(1)=1、f(2)=1、f(n)=f(nー1)+f(n-2)(n≧3) と定義する。

この問題がわかりません。誰か教えてください。

Aベストアンサー

フィボナッチ数列とは、
最初に「1、1」があって、次の数は「前の2つを足し算」です。
「1、1、2」になったら「1と2」で「3」、
「1、1、2、3」になったら「2と3」で「5」、
「1、1、2、3、5」になったら「3と5」で「8」。

これを40番目まで繰り返すだけです。

#include <stdio.h>
#include <stdlib.h>
main()
{
  unsigned long a,b,c;
  int n;
  a=0L;
  b=1L;
  for (n=1;n<=40;n++) {
    printf("%d:%ld\n",n,b);
    c = a + b;
    a = b;
    b = c;
  }
}


人気Q&Aランキング

おすすめ情報