fork download
  1. #include <math.h>
  2. #define NUM 1000
  3.  
  4. int main(void) {
  5. int i, n, sqrt_n, nprime;
  6. int prime[NUM]; // 素数リスト
  7.  
  8. nprime = 0; // nprime: いま素数リストに入っている個数(ここは初期化)
  9. for (n=2;n<=NUM;n++) { // n: 素数なのか調べたい数(2~1000)
  10. sqrt_n = pow(n,0.5); // sqrt_n: √n以下の最大の整数
  11. for (i=0;i<=nprime;i++) { // i: 素数リストの要素番号 素数リストを小さい順にあたっていく
  12. if (prime[i] > sqrt_n || prime[i] == 0) { // 素数リストのsqrt_n以下の数 or 素数リストの最後まで 割り切れることが全くなかった
  13. nprime = nprime + 1; // 素数リストに入っている個数を1つ増やす
  14. prime[nprime-1] = n; // いま調べていたnは素数なので、素数リストの最後に追加する
  15. break; // 次のnへ
  16. } else if (n%prime[i] == 0) { // 素数リストに載っている数で割り切れた
  17. break; // いま調べていたnは素数ではないので、何もせず次のnへ
  18. }
  19. }
  20. }
  21.  
  22. for (i=0;i<nprime;i++) {
  23. printf("%d\t",prime[i]);
  24. }
  25.  
  26. return 0;
  27.  
  28. }
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
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