• 数学算法:求一个数的质因子


    两种方法,第一种是将所有的素数筛选出来,第二种直接循环就行了(第二种更加的高效)。

    第一种方法其实就是先将素数筛选出来然后再计算,第二种是直接计算。


    第一种的代码

    #include<bits/stdc++.h>
    using namespace std;
    const int Max = 1e7+7;
    bool prim[Max];
    vector <int> ve;
    //素数筛选
    void pre_prim()
    {
        for(int i=2;i*i<=Max;i++)
        {
            if(!prim[i])
            {
                ve.push_back(i);
                for(int j=i;j<Max;j+=i)
                    prim[j] = true;
            }
        }
    }
    int main()
    {
        pre_prim();
        long long n;
        while(~scanf("%lld",&n))
        {
            vector<int>::iterator iter;
            for(iter=ve.begin();iter!=ve.end();iter++)
            {
                if(n%*iter == 0)
                {
                    while(n%*iter == 0)
                    {
                        printf("%d ",*iter);
                        n /= *iter;
                    }
                }
            }
            if(n!=1)
                printf("%lld",n);
            printf("
    ");
        }
    }



    第二种方法的代码:
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int main()
    {
        ll n;
        while(~scanf("%lld",&n))
        {
            for(int i=2;i*i<=n;i++)
            {
                if(n%i == 0)
                {
                    while(n%i == 0)
                    {
                        printf("%d ",i);
                        n/=i;
                    }
                }
            }
            if(n!=1)
                printf("%lld",n);
            printf("
    ");
        }
        return 0;
    }


  • 相关阅读:
    RWCString 定义 memeroy leak
    打开eclipse报错
    Eclipse 增加php插件
    Shell 字符串的截取
    【转载】Shell判断字符串包含关系的几种方法
    Shell $? $* $@ 等含义
    Shell 获取指定行的内容
    概念性进程
    网络编程
    模块详解
  • 原文地址:https://www.cnblogs.com/GoldenFingers/p/9107363.html
Copyright © 2020-2023  润新知