zoukankan      html  css  js  c++  java
  • 【基础数学】素数判定、素数打表

      学习了一天,总结一下,虽然还没完全理解。 = =

    • 素数打表
     1 //根据《离散数学》上的一个定理想到的,定理为:“若正整数a>1,且a不能被不超过a的平方根的任一素数整除,则a是素数”,
     2 //实现过程如下
     3 #include<cstdio>
     4 #include<cstring>
     5 #include<cmath>
     6 int p[1000000],t=0;
     7 int prime(int n)
     8 {
     9     int i,q;
    10     //n的平方根
    11     q=(int)sqrt(n);
    12 
    13     //n不能被不超过n的平方根的任一素数整除
    14     for(i = 0;p[i] <= q && t;i++){
    15         printf("two	");
    16         if(n % p[i] == 0)return 0;
    17     }
    18     return 1;
    19 }
    20 int main()
    21 {
    22     int n,i;
    23     while(scanf("%d",&n) == 1){
    24         for(i=2;i<=n;i++){
    25             printf("one	");
    26             if(prime(i)) p[t++]=i;
    27         }
    28         for(i=0;i<t;i++)
    29             printf("%d
    ",p[i]);
    30         //printf("
    ");
    31         t = 0;
    32     }
    33     return 0;
    34 }
    35 //此方法可以对超大量数据的进行打表!
    36 //此方法也同样合适于素数打表,但是判定单个时这个方法不可取!
    37 //还没完全理解,先挖好坑吧
    • 素数判定
     1 //由上个方法可衍生出此素数判定方法:
     2 #include<stdio.h>
     3 #include<math.h>
     4 int p[8]={4,2,4,2,4,6,2,6};
     5 int prime(int n)
     6 {
     7     int i=7,j,q;
     8     if(n==1)return 0;
     9     if(n==2||n==5||n==3)return 1;
    10     if(n%2==0||n%3==0||n%5==0)return 0;
    11     q=(int)sqrt(n);
    12     for(;i<=q;){
    13         for(j=0;j<8;j++){
    14             if(n%i==0)return 0;
    15             i+=p[j];
    16         }
    17         if(n%i==0)return 0;
    18     }
    19     return 1;
    20 }
    21 void main()
    22 {
    23     int n;
    24     scanf("%d",&n);
    25     if(prime(n))puts("Yes");
    26     else puts("No");
    27 }
    28 //这种方法既可以用于最快速地判定单个数,也可以用于判定超大量的数据。
    29 //但目前还没理解.....
    • 练习题

       素数打表:   http://arena.acmclub.com/problem.php?id=1840

       素数判定:   http://arena.acmclub.com/problem.php?id=1790

  • 相关阅读:
    卫星列表
    常见28个问题处理方法
    Dr.COM EPortal 认证
    Linux命令--chroot
    2020 最好的Linux网络监控工具
    auditctl(8)
    ElasticSearch 7.1.1 集群环境搭建
    ElasticSearch 常用 curl 命令
    利用Java的动态编译、动态加载结合EasyRules实现业务规则的动态性
    java根据数据库自动生成JavaBean或pojo
  • 原文地址:https://www.cnblogs.com/zhengbin/p/4363222.html
Copyright © 2011-2022 走看看