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; 
    }
  • 相关阅读:
    函数之装饰器
    前端笔记之css
    前端笔记之html
    python之函数
    python之文件操作
    python基础知识
    ovirt一种基于kvm的开源虚拟化软件
    python2与3的区别
    TP框架设置验证码
    js原生子级元素阻止父级元素冒泡事件
  • 原文地址:https://www.cnblogs.com/h694879357/p/13420946.html
Copyright © 2011-2022 走看看