素数算法问题

素数这个问题其实说简单也简单,成立条件是1和自己本身,

可是假如从算法角度来考虑,发现有些算法其实很耗用资源的

下面几个方法希望读者可以用心体会算法的奇妙之处!

/*2017年 12月2号 
*判断素数的做法: 
*定义:除了1和本身不存在其他约数的正整数位素数 
*/ 
#include <stdio.h>
#include <math.h>

 int IsPrime(int n);
int main(void)
{
    int a,t;
    printf("请您输入您需要输入的数字:");
    scanf("%d",&a);
    t = IsPrime(a);
    
    if(t == 0)
        printf("sorry!您输入的数字不为素数");
    else if(t == 1)
        printf("goodluck!您输入的数字为素数");
        
    return 0;

 } 
 
 //*最愚蠢的做法 
 
 int IsPrime(int n)
 {
     if(n < 2)
         return 0;//小于2肯定不是素数了
    for(int i = 2;i <= n-1;i++)
        {
            if(n%i == 0)
                return 0;//n与所有 比 n 小的数相除,除的尽的话就是合数 
         } 
    
    return 1;//都除不尽,为素数 
     
 }
 //*/
 
 /******************
 1.方法一:一个数除以比它的一半还要大的数,一定除不尽,这个还需要判断?(愚蠢!!!) 
 
 *******************/
 
 /*小学生的做法 
 int IsPrime(int n)
 {
     if(n < 2)
         return 0;
     for(int i = 2;i <= n/2;++i)
     {
         if(n%i == 0)
             return 0;
     }
     
     return 1;
 }
 //*/
 
 /*聪明小学生的做法 
 int IsPrime(int n)
 {
     if(n < 2)
         return 0;
     for(int i = 2;i <= sqrt(n);++i)
         {
             if(n%i == 0)
                 return 0;
         }
         
        return 1;
  } 
  
//*/


 
 
原文地址:https://www.cnblogs.com/healy/p/8341515.html