image.png

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main()
    4. {
    5. long num_input = 0;
    6. scanf("%d",&num_input);
    7. long num_sub = 1;
    8. long num_left = 1;
    9. //枚举测试
    10. for(int i = 2;i<=num_input;i++)
    11. {
    12. num_sub = num_input/i;
    13. num_left = num_input%i;
    14. if(num_left==0)
    15. {
    16. if(primeJudge(i))
    17. {
    18. printf("%d ",i);
    19. //重复测试,质因子可能相同
    20. i-=1;
    21. num_input=num_sub;
    22. }
    23. }
    24. }
    25. }
    26. //质数判断,建议划分子程序,功能分割,否则十分混乱易错
    27. int primeJudge(long num)
    28. {
    29. if(num==2)
    30. {
    31. return 1;
    32. }
    33. else
    34. {
    35. for(int i = 2;i<num;i++)
    36. {
    37. if(num%i==0)
    38. return 0;
    39. }
    40. return 1;
    41. }
    42. }