多学习。

【数论】质因数分解(算术基本定理) (洛谷1075)

原题链接:https://www.luogu.com.cn/problem/P1075

 

 

题解:这道题数据很大,预处理质数明显不行,故我们需要进行质因数分解(若其最大质因数是其本身)。首先我们要明确一个概念任何数都是质因数组成,如4由2组成,8由2组成,9由3组成等等。。。。 

          故这个数若不能被质因数2整,那么必不能被4,8等2的倍数整数,即我们可以通过从头到尾的遍历找到最小整除此数的质因数,即可得出结果

         本题需要一些优化,质因数除了2一定是奇数

复制代码
#include <iostream>

using namespace std;

int main()
{
    int n;
    while(cin >> n)
    {
        int i = 2;
        //质数首先要是奇数
        while(n % i != 0){
            if(i%2) //奇数+2为奇数
                i+= 2; 
            else //偶数+1为奇数
               i++; 
        }
        cout << n/i << endl;
    }
    return 0;
}
复制代码

 

由此题可以引申出质因数分解:

所有数都由质数组成,故我们可以写出分解某个数质因数的代码

复制代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;


int main()
{

    int n;
    while(cin >> n)
    {
        vector<int> prim;
        int i = 2;
        while(n != 1)
        {
            if(n % i == 0)
            {
                if(find(prim.begin(),prim.end(),i) == prim.end())
                    prim.push_back(i);
                n /= i;
            }
            i++;
        }
        for_each(prim.begin(),prim.end(),[](const int &num){cout << num << " ";});
        cout << endl;
    }
    return 0;
}
复制代码

 

posted @   czyaaa  阅读(540)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示