前提・実現したいこと
整数n以下の素数番目の素数の和を求めるプログラムを作成したいです。
k番目の素数pについてkもまた素数であるときにこれを素数番目の素数と呼びます。
具体的にはn=8としたとき、8以下の素数の中で2番目の素数である3,3番目の素数である5の和である8が出力されるというようなプログラムを作成したいです
方針としては3から奇数のみをchecksosuuで調べていき素数番目の素数なら配列に格納し、後でまとめて足すというプログラムにしたいです
発生している問題・エラーメッセージ
int型の自作関数checksosuuが動作しません 例えばn=8に設定して実行すると結果が0となりint checksosuuがうまくいってないことが確認できました。 printf("OK");などとして確認したところwhileループはきちんと回数通りに動いているのですがsosuuhantei が動いていません。
該当のソースコード
C
1#include<stdio.h> 2#include<math.h> 3 4#define n 8//何番目まで調べるか 5 6 7int checksosuu(int a){ 8 int i=3; //素数判定 9 10 for(i=3;i<=a;i+=2){ 11 if(a%i==0)return 0; 12 } 13 return 1; 14} 15 16 17int main(void){ 18 int i=3,j,c=0,N=0,sum=0; 19 int p[n]; 20 21 while(n>i){ 22 if(checksosuu(i)==1){ 23 c++; 24 p[N]=i; 25 N++; 26 27 } 28 i+=2; 29 } 30 for(j=0;j<c;j++){ 31 sum=sum+p[j]; 32 } 33 printf("%d",sum); 34 35 return 0; 36} 37 38
試したこと
printf("OK")などです
補足情報(FW/ツールのバージョンなど)
VScode
回答2件
あなたの回答
tips
プレビュー