素数
入力された値が素数か判断するプログラムとか、入力された値までの素数を表示するプログラム作りたいなって、
ずっと思ってて結局作ってなかったんですが、なんとなくモチベーションがあがったので作ってみました。
malloc,callocとかよくわかんない状況で使ってるので、完全に手探りで、自分で見てても汚いと思います。
その他のところも汚いと思うので、なにかアドバイスがありましたら、してもらえると嬉しいです。
#include<stdio.h> #include<stdlib.h> int main(void) { int i,j,x,n,m; int *prime,*remain; printf("数字を入力してください:"); scanf("%d",&x); prime = (int *)calloc(x,sizeof(int)); remain = (int *)malloc(sizeof(int)*x); prime[0] = 2; for(i=0 ; i<=x ; i++){ remain[i] = 1; } for(i=3 ; i<=x ; i++){ for(j=0,n=0 ; prime[j]>0 ; j++,n++){ remain[n] = i % prime[j]; } m = 0; for(n=0 ; i>n ; n++){ if(remain[n]==0){ m = 1; } } if(m==0){ prime[j] = i; } } free(remain); for(i=0 ; prime[i]>0 ; i++){ printf("%d\n",prime[i]); } free(prime); return 0; }
作り終わってから思ったんですが、絶対誰かがもっといいのを作っているよなって・・・。
まぁ、自分で考えて作ることに意味がありますよね、多分。
リーダブルコードを読んだら、なんか変わりますかね。