zoukankan      html  css  js  c++  java
  • 分解质因数 and 素数筛法(打表) 1e9

    1、每个数都可以写成几个或一个质数的几次方相乘的形式。

    2、质数的倍数是非质数。

    3、1e9    1后面9个零的意思

    #include <cstdio>
    #include <iostream>
    #include<string>
    #include<cstring>
    #include<cmath>
    #include<stdlib.h>
    #include<algorithm>
    #include<vector> 
    #include<queue> 
    #include<stack>  
    using namespace std;
    const int maxn =sqrt(1e9)+1;//注意是开了平方的
    vector<int>v;
    bool isp[maxn];
    void in()
    {
        for(int i=0;i<maxn;i++)
        {
            isp[i]=1;
        }
        isp[0]=0;
        isp[1]=0;
        for(int i=2;i<maxn;i++)
        {
            if(!isp[i])
             continue;
            v.push_back(i);
            for(int j=i*2;j<maxn;j+=i)//注意!从i的2倍数开始
            {
                isp[j]=0;
            }
        }
        return;
    }
    int main()
    {
        in();
        int ans;
        int n;
        while(cin>>n)
        {
            ans=0;
            for(int i=0;i<v.size()&&v[i]<n;i++)
            {
                int f=v[i];
                while(n%f==0)
                {
                    n/=f;
                    ans++;
                }
            
            }
                if(n>1)//n至多只存在一个大于sqrt(x)的素因数。
                ans++;
            cout<<ans<<endl;
        }
      
      return 0; 
    }
  • 相关阅读:
    Docker系列二:Docker的基本结构
    Codeforces 1013
    树形结构升级
    Codeforces 402 and 403 (Div. 2 and 1)
    Codeforces 342
    图论基础
    树形结构基础
    Codeforces 788 (Div. 1)
    NOIP/CSP-J/S初赛集锦
    树的重心
  • 原文地址:https://www.cnblogs.com/h694879357/p/13420946.html
Copyright © 2011-2022 走看看