C语言练习之判断是否为素数

22 篇文章 5 订阅
22 篇文章 11 订阅

**题目要求:**输入一个整数n,判断他是否为素数(质数)
**分析:**采用的算法是,让n除以i,如果n能被2~(n-1)之中的任何一个整数整除,则表示n肯定不是素数,不必再继续被后面的整数除,因此,可以提前结束循环。
代码如下:

#include "stdio.h"
void main()
{
    int n,i;
    scanf("%d",&n);
    n=10;
    for(i=2;i<n;i++)
    {
     if(n%i==0)//1.如果求余等于零 说明能整除 那么就不是素数 所以后边的i就不用验证了 直接跳出循环;2.如果求余不等于零循环继续 直到i不再小于n 跳出循环
     break;
    }
     if(i<n)//跳出循环后判断是因为1跳出的循环 还是因为2跳出的循环。如果是因为1那么n不是素数;如果是因为2,那么n是素数
     printf("不是");
     else
     printf("是");    
}

运行结果:
在这里插入图片描述
分析:
这个题中为什么不在for循环中判断并输出是否为为素数呢?
1.如果在for循环中输出是否为素数 那么每循环一次就会输出一次结果,这肯定不是我们想要的
2.遇到1.中的情况我们肯定会想到用break结束循环,想一下:(如下为设想的for循环部分)

//这部分是错误演示
 for(i=2;i<n-1;i++)
    {
     if(n%i==0)
     {
      printf("不是");
      break;
     }
     if(n%i!=0)
     {
      printf("是");
      break;
     }
    }

假设n=15,循环开始 n%2=1,应该输出“是”,可是15并不是素数,所以结果就不对了。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值