zoukankan      html  css  js  c++  java
  • 判断素数

    看到一个利用数字6来判断一个自然数是否是素数。一个自然数可以写成fx=6*k+b(b=0,1,2,3,4,5)的形式。排除自然数为2或者3的特殊情况,我们可以看到b=0,2,3,4的时候都与6有公约数,所以这时候一定不是素数。也就是一个自然数除以6的余数是1或者是5的时候才有可能是素数。之所以说有可能是因为比较大的数字可能是多个的(6k+1)或(6k+5)的组合的乘积。比如25=5*5=(6*0+5)*(6*0+5),35=(6*0+5)*(6*1+1),只要在这个自然数除以6的余数为1或者5的情况下,排除掉其可能是2个或者多个较小的数(除以6的余数为1或者5的较小的数)的乘积。就可以确定这个数是否是素数了。

     1 #include<iostream>
     2 #include<cmath>
     3 using namespace std;
     4 bool isprime(int num);
     5  
     6 int main()
     7 {
     8 for(int i=1;i<=100;i++)
     9 {
    10     if(isprime(i)) cout<< i<<endl;
    11 }
    12 }
    13 bool isprime(int num)
    14 {
    15     if(num<=1) return false; 
    16     if(num==2 || num==3) return true;
    17     if (num%6!=1&&num%6!=5) return false;
    18     int tmp= sqrt(num);
    19     for(int i=5;i<=tmp;i+=6)
    20     {
    21         if (num%i==0 || num%(i+2)==0) return false;
    22     }
    23     return true;
    24 }

  • 相关阅读:
    策略模式
    Properties类学习笔记
    System类学习笔记
    一个反射的妙用案例
    new 对象时的暗执行顺序
    常用数据库默认端口号
    java对日开发常用语(词汇)总结
    java开发中常用语(词汇)含义
    MyBatis 常用词汇含义
    java SE,EE,ME区别
  • 原文地址:https://www.cnblogs.com/FanXiaoLei/p/14325629.html
Copyright © 2011-2022 走看看