ここから本文です

1〜1000までの素数の和を表示するプログラムを教えてください

アバター

ID非公開さん

2016/10/723:42:08

1〜1000までの素数の和を表示するプログラムを教えてください

閲覧数:
524
回答数:
5
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

k03********さん

2016/10/800:21:23

ID非公開さん

1〜1000までの素数の和

1, 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,

計= 76128

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜4件/4件中

並び替え:回答日時の
新しい順
|古い順

apr********さん

2016/10/906:37:05

/*
2016/10/7 23:42:08

1000までの素数の和を表示するプログラムを教えてください

>>>
1.時間を気にしないでもいいほどすぐ終わるので、時間短縮の
__アルゴリズムは使わず、割り算で割り切り因子がないか試し
__て素数をみつけるという、原理的な方法で組みました。
__この方法で素数が見つけられることを確認して納得して
__下さい。
2.結果出力で手計算で確認しやすいように、処理範囲を1000
__(#define MAX 1000)から100(MAX 199)に縮小してあります
__確認が出来たら、1000に戻してテストしてください。
3.tst>prm/2 ならprm/tst==0で、もともと割り算できません。
__なので、for(tst=2;tst<prm;tst++)の試算のループは
__for(tst=2;tst<=prm/2;tst++) で良くて、それ以上試算を
__続けるプログラムは「間が抜けて」います。
__ですから、たとえ実質、計算時間があっという間の処理でも
__for(tst=2;tst<=prm/2;tst++) としておく方が見栄えがする
__というものです。
__更に言えばここは、tst<=prm/2 と同じ理由で。
__for(tst=2;tst<=sqrt(prm);tst++) の方がもっと少ないループ
__で済みます。
*/
#include <stdio.h>
#include <stdlib.h>

#define MAX 100 // 課題通り実行するには1000

int main(){
_int_ prm;__// 素数の候補
_int_ tst;__// 試験除算因子
_int_ sp=0;_ // 素数<1000の合計
_int_ np=0;_ // 素数<1000の件数
_
_for(prm=2;prm<=MAX;prm++){__// 2からMAXまで逐一、素数か検査
__for(tst=2;tst<prm;tst++){_ // 1,prmの他どれかのtstで試割り
___if(prm%tst==0) break;__ // prm/tstで割り切れる:中止
__}_______ // prmが素数ならtst<prmの全tstで割り切り無
__if(tst==prm){_ // tst==prm:tst<prmで割り切り皆無:素数
___np += 1;___// 以下4行は素数10件ごとに改行して
___sp += prm;__// 素数表を整える出力方法です
___printf("%4d",prm);
___if(np%10==0) printf("\n");
__}
_}
_printf("\n");
_printf("素数:%d個、合計:%d\n",np,sp);
_
_printf("\n# NORMAL END #\n");
_return 0;
}
/* 実行出力:console
_ 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
素数:25個、合計:1060

# NORMAL END #
続行するには何かキーを押してください . . .
*/

プロフィール画像

カテゴリマスター

uso********さん

2016/10/807:24:30

+/p:@i.@(p:^:_1)1000 NB.J

Total@Prime@Range@PrimePi@1000 (*Mathematica*)
http://www.wolframalpha.com/input/?i=sum+of+prime%3C%3D1000

require'prime' #Ruby
p Prime.each(1000).inject(:+)

//codepad.org/qky4exeH#9o0BEIYL#C
#include<stdio.h>
int main(void){int i,*d,s=2,p[]={
  2,3,5,7,11,13,17,19,23,29,31,37};
  for(i=3;i<=1000;s+=*d**d>i?i:0,i+=2)
    for(d=p;*d**d<=i&&i%*d;++d);
return!printf("%d\n",s);}

fer********さん

2016/10/801:18:29

こうやで!


#include <iostream>
#include <vector>
#include <numeric>
using namespace std;

vector<int> get_primes(int max){
vector<int> ret;
if(max >= 2){
ret.push_back(2);
for(int i=3; i<=max; i++){
bool ok = true;
for(auto p : ret){
if(i % p == 0){
ok = false;
break;
}
}
if(ok){
ret.push_back(i);
}
}
}
return ret;
}

int main(){
auto primes = get_primes(1000);
int sum = accumulate(primes.begin(), primes.end(), 0);
cout << sum << endl;
}

hk_********さん

2016/10/800:57:14

k032yfさん

2016/10/800:21:23

ID非公開さん

1〜1000までの素数の和

1, 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,

計= 76128

あれ?1って素数だっけ?
いやぁ頭の悪私にはわからないので教えてくださいますか?

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる