ディリクレの算術級数定理
ディリクレの算術級数定理
素数の求め方忘れたから,適当にやっちゃいました.
だから処理に時間かかるね.
#include <stdio.h> int sosu(int n) { if(n < 2) return 0; if(n == 2) return 1; for(int i = 2; i <= n/2; i++) { if(n%i == 0) return 0; } //printf("(%d) ", n); return 1; } int main(void) { // ファイル出力準備 FILE *pfI; // 入力ファイルポインタ FILE *pfO; // 出力ファイルポインタ pfI = fopen("a.in", "r"); if(pfI == NULL) { printf("ERR: input file open\n"); } pfO = fopen("a.out","w"); if(pfO == NULL) { printf("ERR: output file open\n"); return -1; } int a, d, n; while(1) { // // 入力 // fscanf(pfI, "%d %d %d ", &a, &d, &n); //printf("%d %d %d\n", a, d, n); if(a == 0 && d == 0 && n == 0) break; // // 処理 // int m = a; int c = 0; // 今までの素数の数,c=nで正解 int f = 1; while(f) { //printf("%d ", m); // 素数か調べる if(sosu(m)) c++; // // 抜けるようにしてあるよ!!! // if(c == n) { f = 0; fprintf(pfO, "%d\n", m); //printf("%d\n", m); break; } // 次の数字へ m += d; } //printf("\n%d\n", c); } //ファイルポインタを閉じる fclose(pfI); fclose(pfO); return 0; }