素数2
前回あげたのを多少改善したものです。
#include<stdio.h> #include<stdlib.h> void prime(int); int main(void) { int x; printf("数字を入力してください:"); scanf("%d",&x); if(x==1){ printf("1までの素数はありません。\n"); return 0; } prime(x); return 0; } void prime(int x) { int i,j,n,m; int *primen,*remain; primen = (int *)calloc(x,sizeof(int)); remain = (int *)malloc(sizeof(int)*x); primen[0] = 2; for(i=3 ; i<=x ; i++){ for(j=0 ; primen[j]>0 ; j++){ remain[j] = i % primen[j]; } m = 0; for(n=0 ; n<j ; n++){ if(remain[n]==0){ m = 1; } } if(m==0){ primen[j]=i; } } free(remain); printf("%dまでの素数は:\n",x); for(i=0 ; primen[i]>0 ; i++){ printf("%d\n",primen[i]); } free(primen); }