使用C语言编写一个程序,接受一个整数输入,然后显示所有小于或等于该数的素数(质数)

一、实现要求

编写一个程序,接受一个整数输入,然后显示所有小于或等于该数的素数(质数);

什么是素数?

素数又称质数。简单来说一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数,这个数是大于等于2的整数;否则称为合数(规定1既不是质数也不是合数),例如2、3、5、7、11……

二、算法思路

那么我们知道什么是质数了,操作起来就简单啦,先使用scanf输入一个正整数,然后通过for循环依次找到比input小的数,再去判断他们是否为质数,再实现最后的结果输出。

通过for循环将小于等于input的数依次传入bool zhishu(int num)函数中,此函数是为了判断所传参数是否为质数,故使用返回类型bool即可

质数判断方法:最基本的就是除了1和它自身外,不能被其他自然数整除的数,若被2整除的数肯定也不是质数了,所以我们可以直接从2开始找,这样可以提升一下检索效率。接着依次判断比它小的数中有没有能整除这个数的,可以使用取模的方法,即代码中if(num%j==0),若取模为0证明被整除了,可以直接判断它不是一个质数,若所有都遍历完了,还是没有找到取模为0的,返回true,证明这个数是一个质数。这是大概的思路, 代码中也有详细注释。

三、代码实现

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

// 题目:编写一个程序,接受一个整数输入,然后显示所有小于或等于该数的素数。
bool zhishu(int num)
{
    for(int j=2; j<num; j++)
    {
        if(num%j==0)
        {
            return false;
            break;
        }

        
    }
    return true;
}

int main()
{
    int input;
    while(1)
    {
        printf("请输入一个数字:");
        if(scanf("%d", &input)==1);  //判断输入是否成功
        {
            for(int i=2; i<=input; i++)   //依次查询小于或等于input的数
            {
                if(zhishu(i))    //将小于或等于input的数且为质数的数打印出来
                {
                    printf("%d\t", i);  
                }
            }
        }
        if(getchar()!='\n')  //判断输入位正整数
        {
            printf("请输入一个正整数!!!");
        }
        printf("\n");
    }
  
    return 0;

}

以上是实现一个整数输入,显示输出所有小于或等于该数的素数(质数)的思路,方法比较简单,这里做个小记录与分享,有什么写错的地方,请大佬们多多指教!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值