分解质因数答疑 为什么只需要枚举到根号N 为什么n % i == 0就是质数

简介: 分解质因数答疑 为什么只需要枚举到根号N 为什么n % i == 0就是质数

什么是分解质因数:

题目描述:

输入样例:

2
6
8

输出样例:

2 1
3 1
2 3

思路:

为什么只需要枚举到根号N

为什么n % i == 0就是质数

因为在枚举到i之前已经把n中2到i-1的质因子除干净了,此时n中不含2到i-1的质因子,由于n为i的倍数,所以i中也不包含2到i-1的质因子。如果i可以整除前面的i - 1中的数那么i = x * (i - 1),n = x2 * (x * (i - 1));

矛盾了

代码:

#include <iostream>
using namespace std;
void divide(int n)
{
    for (int i = 2; i <= n / i; i++) 
        {
            if (n % i == 0)
            {
                int s = 0;
                while (n % i == 0)
                    {
                        n /= i;
                        s++;
                    }
                cout << i << " " << s << endl;
            }    
        }
    //单独处理大于根号N的质因数
    if (n > 1)  cout << n << " " << 1 << endl;
    cout << endl;
}
int main()
{
    int n;
    cin >> n;
    while (n--)
        {
            int x;
            cin >> x;
            divide(x);
        }
    return 0;
}
目录
相关文章
|
8月前
|
人工智能 网络协议 BI
PTA-求10个整数中的偶数的和
求10个整数中的偶数的和
72 0
|
算法
判断2..100以内的质数--sqrt
判断2..100以内的质数--sqrt
68 0
|
8月前
|
Python
如何判断一个数是质数? 要求:编写一个Python函数,输入一个整数,输出该整数是否为质数。质数是指大于1的自然数中,除了1和它本身以外不再有其他因数的数。
如何判断一个数是质数? 要求:编写一个Python函数,输入一个整数,输出该整数是否为质数。质数是指大于1的自然数中,除了1和它本身以外不再有其他因数的数。
407 1
|
3月前
判断一个素数能被几个9整除
【10月更文挑战第10天】判断一个素数能被几个9整除。
46 2
|
8月前
40.验证哥德巴赫猜想:一个大于2的偶数总可以分解成两个素数的和
40.验证哥德巴赫猜想:一个大于2的偶数总可以分解成两个素数的和
87 5
|
存储 索引
信息学奥赛 如何在整数数组中寻找两数之和等于给定目标值
本文介绍了在整数数组中寻找两个数之和等于给定目标值的问题,提供了两种解法:暴力法和哈希表法。通过比较两种解法的时间复杂度,指出了哈希表法更为高效。
131 0
|
8月前
11.09作业详解(弹球距离,素数,最大公约数最小公倍数,求整数位数及其各位数字之和,打印乘法表)
11.09作业详解(弹球距离,素数,最大公约数最小公倍数,求整数位数及其各位数字之和,打印乘法表)
|
8月前
|
Python
素数(prime number)又称质数,有无限个。除了1和
素数(prime number)又称质数,有无限个。除了1和
判断10-105之间有多少个素数,并输出所有素数。【素数又称为质数,定义为在大于1的 自然数中,除了1和它本身以外不再有其他因数的数
判断10-105之间有多少个素数,并输出所有素数。【素数又称为质数,定义为在大于1的 自然数中,除了1和它本身以外不再有其他因数的数
115 0
判断是否是质数
判断是否是质数
77 0