欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

质数因子

程序员文章站 2022-07-13 14:27:19
...

功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )

最后一个数后面也要有空格

思路:

(1) 每一个合数都可以分解为若干个质数的乘积;

(2) i从2开始找,当第一个N % i == 0的时候, i一定为N的最小质因子,假设i为合数,则i肯定能分为更小的质数乘积,又因为i是从2开始的,所以i是最小的质因子, 此时进行N = N / i; 

如何保证N / i的最小质因子从i开始, 假设从i之前就有N / i的质数因子,那么这个质数因子肯定也是N的,又因为前面证明了i就是最小的质数因子,所以假设不成立。

(3)  N % i != 0的时候,i++直到i = N

代码如下:

#include <stdio.h>

int main(void)
{
    long N = 0;
        
    while (scanf("%d", &N) != EOF) {
        for(int i = 2; i < N + 1;) {
            if (N % i == 0) {
                printf("%d ", i);
                N = N / i;
            } else {
                i++;
            }
      }
      printf("\n");
    }
    
    return 0;
}

 

上一篇: 互联网之父

下一篇: 互联网+