素数的判定

原理:


检验一个数是否为素数(质数),可以通过以下几种方法进行:
1、平方根法:只需将该数除以2到它的平方根之间的每一个数,如果能够被其中任何一个数整除,则该数不是素数;
否则,该数为素数。这是因为一个合数必定有一个小于或等于其平方根的因数。
2、暴力法:遍历所有大于1且小于该数的整数,判断该数是否能被这些整数整除,如果不能,则该数为素数。

1.平方根法


#include<stdio.h>
#include<math.h>
int main()
{
    int n,i;
    scanf("%d",&n);
    if(n<=1)
    {
        printf("No\n");
        return 0;
    }

     for(i=2;i<=(int)sqrt(n);i++)
     {
        if(n%i==0)//非素数 
      {
        printf("No\n");
      break;
      }
   }//(int)sqrt(n)<=i*i的开平方 

   if(i>sqrt(n))  //循环结束后sqrt(n)<i+1
    printf("Yes\n");
    
    return 0;
}

2暴力法

#include<stdio.h>
int main()
{
    int n,i;
    scanf("%d",&n);
    /*
    if(n<=0)
    printf("不在素数范围里")
   
     for(i=2;i<n;i++) 
     {
        if(n%i==0)
         break;
   }
    if(i==n)
    printf("Yes\n");
    else
    printf("No\n");
    return 0;

/***** 2 方法的优化上面算法*****/ 

#include<stdio.h>
int main()
{
    int n,i;
    scanf("%d",&n);
     for(i=2;i<=n/2;i++)
     {
        if(n%i==0)
        //{
        //    printf("No");
        //    break;
            ///    } //n<=1的情况没有显示 
            break; 
     }
    if(i==(n/2)+1)
    printf("Yes\n");
    else 
    printf("No\n");
    return 0;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值