分解质因数答疑

简介: 为什么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));矛盾了为什么只需要枚举到根号N

什么是分解质因数:

题目描述:

输入样例:

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;
}
目录
相关文章
筛质数、分解质因数和快速幂的应用
筛质数、分解质因数和快速幂的应用
68 0
|
28天前
|
Java
回文数
本题要求判断一个整数是否为回文数,即正序和倒序读都相同。示例包括:121 (true), -121 (false), 10 (false)。进阶挑战是在不将整数转换为字符串的情况下解决问题。给出的 Java 代码通过将整数转换成字符串并反转比较实现功能。
21 0
|
3月前
将一个正整数分解质因数
将一个正整数分解质因数。
69 8
|
3月前
|
移动开发 算法
求其最大公约数和最小公倍数
求其最大公约数和最小公倍数。
82 5
|
6月前
9.回文数
9.回文数
|
7月前
|
机器学习/深度学习
完全平方数
完全平方数.。
88 0
|
7月前
|
人工智能 Java C++
分解质因数
分解质因数
56 1
|
7月前
|
C++
有效的完全平方数(C++)
有效的完全平方数(C++)
81 0
【每周一坑】​正整数分解质因数 +【解答】计算100以内质数之和
关于分解质因数:每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,把一个合数用质因数相乘的形式表示出来,叫做分解质因数。分解质因数只针对合数。