素数判断

14 篇文章 0 订阅
13 篇文章 0 订阅

输入一个数,判断是不是素数

#include<stdio.h>
int main()
{
    int n,i;

    scanf("%d",&n);
    for(i=2;i<n;i++)
    {
        if(n%i==0)
            break;
    }
    if(i==n)
        printf("Yes\n");
    else
        printf("No");

    return 0;
}
但其实并不用检测2~n-1,只需检测2~n/2或2~sqrt(n)(算术平方根)就能判定是不是素数。因为n>4时,sqrt(n)<n/2,所以相比之下,sqrt(n)更优化

#include<stdio.h>
#include<math.h>

int main()
{
    int n,i,w;

    scanf("%d",&n);
    w=(int)sqrt(n);//注意,sqrt的返回值是double类型
    for(i=2;i<=w;i++)
    {
        if(n%i==0)
        {
            printf("No\n");
            break;  //或者直接return 0;函数结束
        }
    }
    if(w+1==i)  //或者增加一个变量起标记作用,输出no时改变变量值,这里进行判断变量是否发生了改变
        printf("Yes\n");

    return 0;
}

下面这种算是标准的机构化程序设计(由3种基本结构顺序组成):

#include<stdio.h>
#include<math.h>

int main()
{
    int n,i;
    int flag=0; //标记    要有初始值

    scanf("%d",&n);
    for(i=2;(i<=sqrt(n))&&(flag==0);i++)//sqrt的返回值是double类型
    {
        if(n%i==0)
            flag=1;
    }
    if(flag==0) //标记flag没有改变
        printf("Yes\n");
    else
        printf("No\n");

    return 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值