zoukankan      html  css  js  c++  java
  • 素数

    质数:

    若一个正整数无法被除了1和它自身之外的任何自然数整除,则该数称为质数,否则称为合数。

    质数的三种求法中,筛选法优选线性筛法,判定则用试除法最好。

    试除法:

     

     1 #include<iostream>
     2 using namespace std;
     3 int n;
     4 bool is_prime(int x){
     5     if(x <= 1) return 0;
     6     for (int i=2; i*i<=x; i++)
     7         if (x % i == 0) return 0; 
     8     return 1;
     9 } 
    10 int main(){
    11     cin >> n;
    12     for (int i=1; i<=n; i++)
    13         if (is_prime(i)) cout << i <<"
    ";
    14     
    15     return 0;
    16 } 

    Eratosthenes筛法

     1 #include<iostream>
     2 using namespace std;
     3 int n, num;
     4 bool flag[100000];
     5 void Eratosthenes(int n){
     6     for(int i=2; i*i<=n; i++){
     7         if(flag[i]) continue;
     8         for(int j=i*2; j<=n; j+=i)
     9             flag[j] = 1;
    10     }
    11 }
    12 int main(){
    13     cin >> n;
    14     Eratosthenes(n);
    15     for(int i=1; i<=n; i++)
    16         if(!flag[i]) cout << i <<"
    ";
    17     
    18     return 0;
    19 } 

     

     

    线性筛法:

     1 #include<iostream>
     2 using namespace std;
     3 int prime[100000], num, n;
     4 bool flag[100000];
     5 void primes(int n){
     6     for(int i=2; i<=n; i++){
     7         if(!flag[i]) prime[++num] = i;
     8         for(int j=1; j<=num; j++){
     9             if(prime[j] * i > n) break;
    10             flag[prime[j] * i] = 1;
    11             if(prime[j] % i == 0) break;
    12         }
    13     } 
    14 }
    15 int main(){
    16     cin >> n;
    17     primes(n);
    18     for(int i=1; i<=num; i++){
    19         cout << prime[i] <<"
    ";
    20     }
    21     return 0;
    22 }
  • 相关阅读:
    信息安全系统设计基础第四周学习内容
    信息安全系统设计基础第三周学习总结
    第十二节 Linux下软件安装
    第十一节 正则表达式基础
    session的生命周期
    session对象
    什么是session
    请求重定向和请求转发的关系
    java web的response对象
    java web中request对象(下)
  • 原文地址:https://www.cnblogs.com/hnoi/p/10988929.html
Copyright © 2011-2022 走看看