【分解质因数】合数的质因数分解

一:什么是质因数:一个是数的因数是质数的话,那么这个因数就是质因数

二:分解质因数:

        每个合数都能够分为若干个质因数,证明:

        1.如果k是合数,那么k肯定拥有除了1和k之外的因数,因数分为两者情况:

                (1)质数,就是质因数

                (2)合数:合数可以分解为其他的因数,分为质数和合数,所以最终能够分解为质数

        2.如果k不拥有1和k之外的因数,那么k是质数

三:如何分解质因数

        我们只需从小到大枚举(从2开始)数,只要i是质数n就除以i,知道最后枚举的i等于n为止

#include<iostream>
using namespace std;
void divide(int x)
{
    for (int i = 2; i <= x / i; i ++ )
        if (x % i == 0)
        {
            int s = 0;
            while (x % i == 0) x /= i, s ++ ;
            cout << i << ' ' << s << endl;// 输出质因数和出现的次数
        }
    if (x > 1) cout << x << ' ' << 1 << endl;
    cout << endl;
}
int main()
{
    int n;
    cin>>n;
    divide(n);
}

解惑1:为什么循环条件是i<=x/i

        因为一个合数x至多只有一个大于根号x的质数(如果有两个大于根号x的,那么两者相乘就大于x了,矛盾),所以我们只需要先把小于等于根号x的质因数提取出来,最后在判断是否有大于根号x的质因子即可,就是判断n是否大于1,如果大于1表面n没有被小于根号x的质因数除尽,那么剩下的就是大于根号x的质因子

解惑2:为什么是循环所有的数,而不是只循环质数:

        因为循环到每一个合数之前,合数的质因数都已经被循环过了,如果这个合数能够进入

那么这个合数的质因数也一定可以进入这个循环,然后x会一直除以该质因数,所以循环到那个合数的时候一定不会进入这个循环。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值