判断是否为质数

程序说明

程序接受两个正整数的输入,构成一个闭区间,找出这个区间内的所有质数。

算法说明

判断一个数n是否为质数时,先对这个数开平方,随后从2开始,循环到这个平行根,检查其中的数能否整除数n,若能整除,则为合数,否则为质数。由于sqrt函数的返回值是double类型,为保证准确性(如sqrt(4)返回值可能是1.9999999),循环的取值区间应为[2, sqrt(n)+1)。

程序代码

/* 
 * prime.c
 * Output all prime numbers in a range.
 * writen by Liangjin Song on 20191030
*/
#include <stdio.h>
#include <math.h>

#define uint    unsigned int
#define Bool    int
#define True    1
#define False   0

Bool is_prime(uint number)
{
    for(uint i=2; i< sqrt(number)+1; ++i){
        if(number%i==0){
            return False;
        }
    }
    return True;
}

int main()
{
    uint a,b;
    do{
        printf("Please input two positive integers a and b (2 <= a < 10, b < 1000):\n");
        scanf("%d%d",&a,&b);
    }while(!(a < 10 && a>=2 && b < 10000));
    
    printf("The prime numbers in the range [%d, %d]:\n",a,b);
    for(uint n=a; n<=b; ++n){
        if(is_prime(n)){
            printf("%d  ",n);
        }
    }
    printf("\n");
    return 0;
}

运行结果

2-100之间的质数

在Linux下编译时,若出现undefined reference to `sqrt’的错误,则编译时还需要使用-lm连接到数学函数库

cc prime.c -lm
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值