fork download
  1. #include <stdio.h>
  2.  
  3. int prime_factor(int n,int x){
  4. if(x<2){
  5. return 1;
  6. //因数ではない
  7. }
  8. else if(n%x==0){
  9. int b;
  10. b=x;
  11. //2以上の因数
  12. int p=pri(b,b-1);
  13. if(p==4){
  14. printf("%dは%dの素因数である\n",x,n);
  15. }
  16. else if(p==3){
  17. printf("%dは%dの因数であるが、素因数ではない\n",x,n);
  18. }
  19. return prime_factor(n,x-1);
  20. }
  21. else{
  22. printf("%dは%dの因数ではない\n",x,n);
  23. return prime_factor(n,x-1);
  24. }
  25.  
  26. }
  27. //aは判定したい数、bは2~aまでの数
  28. int pri(int a,int b){
  29. if(b<2){
  30. return 4;//素数である
  31. }
  32. else if(a%b==0){
  33. return 3;//素数ではない
  34. }
  35. else{
  36. return pri(a,b-1);//判定されるまで再帰呼び出し
  37. }
  38. }
  39.  
  40. int main(){
  41. int m;
  42. scanf("%d",&m);
  43. printf("%d\n",prime_factor(m,m));
  44. return 0;
  45. }
  46.  
Success #stdin #stdout 0s 5280KB
stdin
16
stdout
16は16の因数であるが、素因数ではない
15は16の因数ではない
14は16の因数ではない
13は16の因数ではない
12は16の因数ではない
11は16の因数ではない
10は16の因数ではない
9は16の因数ではない
8は16の因数であるが、素因数ではない
7は16の因数ではない
6は16の因数ではない
5は16の因数ではない
4は16の因数であるが、素因数ではない
3は16の因数ではない
2は16の素因数である
1