fork download
  1. // プログラミングのお題スレ Part9 [無断転載禁止]©2ch.net
  2. // 31 名前:◆QZschizo.iSO [sage]: 2016/12/31(土) 18:31:14.25 ID:nvhfPpJn
  3. // 瞬速年忘れ問題
  4. // 2017は素数か?素数なら何番目か?
  5.  
  6. #include<stdio.h>
  7. #include<math.h>
  8.  
  9. int is_sosu(int d)
  10. {
  11. int i, limit;
  12.  
  13. if (d == 2) {
  14. return 1;
  15. }
  16. if (d < 2 || d % 2 == 0) {
  17. return 0;
  18. }
  19. limit = (int) sqrt((double) d);
  20. for (i = 3; i <= limit; i += 2) {
  21. if (d % i == 0) {
  22. return 0;
  23. }
  24. }
  25. return 1;
  26. }
  27.  
  28. int main()
  29. {
  30. int n, m, count;
  31.  
  32. while (1) {
  33. printf("数(0 で終了):");
  34. scanf("%d", &n);
  35. if (n == 0) {
  36. return 0;
  37. }
  38. if (is_sosu(n) == 0) {
  39. printf(" %d は素数じゃない\n", n);
  40. } else {
  41. count = 1;
  42. for (m = n; m > 2; m -= 2) {
  43. if (is_sosu(m)) {
  44. count++;
  45. }
  46. }
  47. printf(" %d は %d番目の素数\n", n, count);
  48. }
  49. }
  50. }
  51.  
Success #stdin #stdout 0s 2172KB
stdin
2016
2017
7
5
4
3
2
1
0
stdout
数(0 で終了):  2016 は素数じゃない
数(0 で終了):  2017 は 306番目の素数
数(0 で終了):  7 は 4番目の素数
数(0 で終了):  5 は 3番目の素数
数(0 で終了):  4 は素数じゃない
数(0 で終了):  3 は 2番目の素数
数(0 で終了):  2 は 1番目の素数
数(0 で終了):  1 は素数じゃない
数(0 で終了):