判断101 - 200之间有多少个素数,并输出所有素数。

题目:判断101 - 200之间有多少个素数,并输出所有素数。

解法一:程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

#include <stdio.h>  
#include <math.h>  
#include <stdbool.h>  
  
bool is_prime(int num) {  
    // 0, 1 不是素数  
    if (num <= 1) {  
        return false;  
    }  
    // 只需要检查到sqrt(num)即可  
    for (int i = 2; i <= (int)sqrt(num); i++) {  
        if (num % i == 0) {  
            // 如果能被整除,则不是素数  
            return false;  
        }  
    }  
    // 如果没有找到能整除的数,则是素数  
    return true;  
}  
  
int main() {  
    int num;  
    printf("请输入一个整数: ");  
    scanf("%d", &num);  
      
    if (is_prime(num)) {  
        printf("%d 是素数\n", num);  
    } else {  
        printf("%d 不是素数\n", num);  
    }  
      
    return 0;  
}

解法二:

#include <stdio.h>  
#include <stdbool.h>  
  
bool isPrime(int num) {    
    // 如果数字小于等于1,它不是素数  
    if (num <= 1) return false;    
    // 2是最小的素数  
    if (num == 2) return true;    
    // 如果数字是偶数(除了2),它不是素数  
    if (num % 2 == 0) return false;    
    
    // 检查从3开始的所有奇数是否是num的因子  
    for (int i = 3; i * i <= num; i += 2) {    
        if (num % i == 0)    
            return false;  // 如果找到一个因子,则num不是素数  
    }    
    return true;  // 如果没有找到任何因子,则num是素数  
}
  
int main() {  
    int count = 0;  
    printf("素数(Prime numbers)在101到200之间:\n");  
  
    for (int i = 101; i <= 200; i++) {  
        if (isPrime(i)) {  
            printf("%d ", i);  
            count++;  
        }  
    }  
  
    printf("\n共有 %d 个素数\n", count);  
    return 0;  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值