• 素数筛法+质因数分解+快速幂


    素数筛法

    最基础的埃筛

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int M=1e5+10;
     4 int p[M],ch[M];
     5 void init() {
     6 
     7     int num=1;
     8     memset(ch,0,sizeof(ch));
     9     for(int i=2; i<=M; i++) {
    10         if(ch[i]==0)
    11         {    p[num++]=i;
    12         for(int j=i;j<=M;j=j+i)
    13         {
    14         ch[j]=1;
    15         }
    16         }
    17     }
    18 }
    19 int main() {
    20 init();
    21 for(int i=1;i<=100;i++)
    22     cout<<p[i]<<endl;
    23 
    24 }

    记一个欧拉筛法吧。

     
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int M=1e5+10;
     4 int p[M],ch[M];
     5 void init() {
     6 
     7     int num=1;
     8     memset(ch,0,sizeof(ch));
     9     for(int i=2; i<=M; i++) {
    10     if(ch[i]==0)p[num++]=i;
    11     for(int j=1;j<num&&i*p[j]<=M;j++)
    12     {
    13     ch[i*p[j]]=1;
    14     if(i%p[j]==0)break;
    15     }
    16     }
    17 }
    18 int main() {
    19 init();
    20 for(int i=1;i<=100;i++)
    21     cout<<p[i]<<endl;
    22 
    23 }

     然后是质因数分解

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 const int M=1000;
     5 int a[M],b[M];
     6 void factor(int n) {
     7     int num=1;
     8     int temp=int(double(sqrt(n))+1);
     9     for(int i=2; i<=temp; i++) {
    10         if(n%i==0) {
    11             a[num++]=i;
    12             while(n%i==0) {
    13                 b[num-1]++;
    14                 n/=i;
    15             }
    16         }
    17 
    18     }
    19     if(n!=1)
    20     {
    21         a[num]=n;
    22         b[num]=1;
    23     }
    24 }
    25 
    26 
    27 
    28 int main()
    29 {
    30 factor(132);
    31 for(int i=1;i<=10;i++)
    32     printf("%d ",a[i]);
    33     cout<<endl;
    34 for(int i=1;i<=10;i++)
    35     printf("%d ",b[i]);
    36 }

     快速幂

     1 long long quick_pow(long long a,long long b,long long mod) {
     2 
     3     long long ans=1;
     4     while(b) {
     5         if(b&1)
     6             ans*=a%mod;
     7         a*=a%mod;
     8         b>>1;
     9     }
    10 
    11 }
  • 相关阅读:
    MySQL用户管理
    linux下杀死进程(kill)的N种方法
    Windows查看某个端口被谁占用
    SQL语句
    CentOS6.5 安装mysql-5.7.9
    Linux服务器安全之用户密钥认证登录
    Linux添加/删除用户和用户组
    linux命令killall 、kill 、pkill 命令详解
    linux下cat命令详解
    linux之sed用法
  • 原文地址:https://www.cnblogs.com/lhsghhqgmzy/p/10772055.html
Copyright © 2020-2023  润新知