[判断素数] 求区间内所有的素数

该程序使用C语言实现,遍历100到999之间的所有三位数,通过调用`is_prime_number`函数判断每个数是否为素数。素数检查通过对于不超过该数平方根的每个数进行模运算来完成。找到素数后,每输出5个就换行,并在最后输出总共找到的素数数量。
摘要由CSDN通过智能技术生成

题目要求:

打印三位数中所有的素数 

解析:

一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数.

能否整除其他自然数, 这点用到求模, 在区间内检索每个数用for, 用调用函数使解析思路更加清晰

#include<stdio.h>
#include<math.h>
int is_prime_number(int m);
int main(void)
{
    printf("Prime number have:\n");
    int j;
    int wrap = 0,counter = 0;           //每输出4个换行,counter计算区间内的个数
    for(j = 100;j<=999;j++)
    {
        if(is_prime_number(j))            //若是素数 则返回1
        {
            printf("%d ",j);
            wrap++;
            counter++;
            if(wrap == 5)
            {
                putchar('\n');
                wrap = 0;
            }
        }
    }
    printf("\ncounter = %d",counter);
    return 0;
}

int is_prime_number(int m)
{
    int i,a = 0;              //m为一个三位数,a为判断因子
    int k=(int)sqrt(m);        //求至到根号值 sqrt的库函数为math
    for(i = 2;i<=k;i++)        //因为开方且整型 所以得取到k
    {
        if(m % i == 0)        //判断是否为素数
            a++;              //若除得尽则a+1;

    }

    if(a == 0 && m != 1)            //循环结束 未执行if 则a必为0
        return 1;         //printf("%d is a prime\n",m);
    else
        return 0;        //printf("%d isn't a prime\n",m);


}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值