素数判定算法

        素数:也称质数,指在一个大于1的自然数中,满足除了1和自身以外,不能被其他自然数整除的数。与其相对立的即为合数,也即比1大且不是素数的数就是合数。注意一点,1和0既不是素数又不是合数。


        判定是否为素数的算法:

        1、算法1:依次判断该数(N)能否被2~N-1中的数整除,如果不能被2~N-1中间的任何一个数整除,则为素数。

/*判断一个大于1的自然数是否为素数*/
#include <stdio.h>

#define TRUE    0
#define FALSE   1

int IsPrime(int n)
{
    int i=0;
    
    for(i=2; i<n; i++)
    {
        if(0 == n%i)
            return FALSE;
    }
    
    return TRUE;
}

int main()
{
    int i,n;
    
    scanf("%d", &n);
    
    for(i=2; i<=n; i++)
    {
        if(TRUE == IsPrime(i))
        {
            printf("num %d is prime!\r\n", i);
        }        
    }
    
    return 0;
}

        2、算法2: 判断N是否为素数只需用2~N/2之间的数去除就可以了。因为一个数的一半的平方大于其本身是从5开始的,解方程:N/2的平方>N 。即 一个数N的两个因数不能同时比N/2大。就可以说一个数若不是素数则一定在2~N/2之间有因数。

/*判断一个大于1的自然数是否为素数*/
#include <stdio.h>

#define TRUE    0
#define FALSE   1

int IsPrime(int n)
{
    int i=0;
    
    for(i=2; i<n/2; i++)
    {
        if(0 == n%i)
            return FALSE;
    }
    
    return TRUE;
}

int main()
{
    int i,n;
    
    scanf("%d", &n);
    
    for(i=2; i<=n; i++)
    {
        if(TRUE == IsPrime(i))
        {
            printf("num %d is prime!\r\n", i);
        }        
    }
    
    return 0;
}
        3、算法3:求解方法还可以简化为,N不必被2~N-1之间的每一个整数去除,只需被2~根号N之间的每个数去除就可以了。
/*判断一个大于1的自然数是否为素数*/
#include <stdio.h>
#include <math.h>

#define TRUE    0
#define FALSE   1

int IsPrime(int n)
{
    int i=0;
    
    for(i=2; i<=sqrt(n); i++)
    {
        if(0 == n%i)
            return FALSE;
    }
    
    return TRUE;
}

int main()
{
    int i,n;
    
    scanf("%d", &n);
    
    for(i=2; i<=n; i++)
    {
        if(TRUE == IsPrime(i))
        {
            printf("num %d is prime!\r\n", i);
        }        
    }
    
    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值