• 质因数分解


    首先,你得先知道任意一个合数可以拆分成若干个素数之积

    例如:24=2*2*2*3

    然后就简单了,我是先取得一定量的素数(用之前写的素数筛),而后看能否整除,能就继续,不能就除下一个素数。

    贴代码:

    #include <iostream>
    #include <cmath>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    using namespace std;
    
    int main()
    {
        //先筛素数
        int num=0;
        int prime[10000];                   //用于存放素数
        int flag[10005];                    //用于判断i是否为素数
        memset(flag,0,sizeof(flag));
        for(int i=2;i<=10000;i++){
            if(flag[i]==0){
                prime[num++]=i;
                for(int j = i+i; j<=10000; j+=i)
                    flag[j]=1;
            }
        }
        int n;                          //合数
        cin>>n;
        cout<<n<<"=";
        int p=0;
        bool q=0;                       //用于处理第一个输出的数
        while(n!=1){
            if(n%prime[p]==0){
                if(q==0){
                    cout<<prime[p];
                    q++;
                }
                else{
                    cout<<"*"<<prime[p];
                }
                n=n/prime[p];
            }
            else
                p++;
        }
        return 0;
    }

    貌似有更优化的方法,尚未学习,等以后学了再更

  • 相关阅读:
    9.19题解
    9.18题解
    改码风
    找到了几个好的网站
    题目链接
    二分上机训练题解
    二分例题简单说明
    贪心上机训练题解
    贪心算法例题简单说明
    Johnson法则证明
  • 原文地址:https://www.cnblogs.com/xinzhiyan/p/7837987.html
Copyright © 2020-2023  润新知