fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int isPrime(int x){
  5. int i;
  6. if(x<2){
  7. return 0;
  8. }
  9. for(i=2;i<=(int)sqrt(x);i++){
  10. if(i!=x){
  11. if(x%i==0){
  12. return 0;
  13. }
  14. }
  15. }
  16. return 1;
  17. }
  18. int main(void) {
  19. int i, a;
  20. char* l;//文字列型
  21. int p=0,sp=4096;//lの文字列長と最大文字列長を記録しておく
  22. printf("自然数を入力してください\n");
  23. scanf("%d",&a);
  24. printf("%d以下の素数は以下のとおりです\n",a);
  25. l=(char*)malloc(sp);//ポインタで
  26. p=sprintf(l,"{ ");
  27. for(i=2;i<=a;i++){
  28. if(isPrime(i)){
  29. p=sprintf(l,"%s%d,",l,i);
  30. if(p*2>sp){
  31. sp*=2;
  32. char* tmp=(char*)realloc(l,sp);
  33. free(l);
  34. l=tmp;
  35. }
  36. }
  37. }
  38. l[p-1]='\0';//最後の,をカット
  39. sprintf(l,"%s }",l);
  40. printf(l);
  41. return 0;
  42. }
  43.  
Success #stdin #stdout 0s 9432KB
stdin
100
stdout
自然数を入力してください
100以下の素数は以下のとおりです
{ 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 }