CS50的一个问题(初学者的提问)

初学CS,看到这个不知道怎么解决。
它这个要输出控制质数的输出,比如min:1,max:100,就输出1-100间的质数。

img

img

只要写一个判断质数的函数就好了

使用一般判断素数的方法即可。

测试代码如下:

参考链接:


C语言判断素数(求素数)(两种方法) 素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。 思路1):因此判断一个整数m是否是素数,只需把 http://c.biancheng.net/view/498.html


#include "cs50.h"  // https://www.coder.work/article/4872665
#include "cs50.c"

bool prime(int number); 

int main(void){
    
    int min;
    do{
        min=GetInt(); // 从下载链接里找的cs50.c的代码, 使用的是里面的GetInt()函数来获取一个整数 
    }while(min<1);
    
    int max;
    do{
        max = GetInt(); 
    }while(min>=max);
    
    
    for(int i=min;i<=max;i++){
        if(prime(i)){
            printf("%i\n",i);
        }
    }
} 

// 简单判断素数的方法 
// http://c.biancheng.net/view/498.html
bool prime(int number){
    
    // 小于2的数不是素数,返回0 
    if(number<2){
        return 0;
    }

    // 如果区间 2到 number-1内的任意一个数可以整除number,则number不是素数 
    for(int i=2;i<number;i++){
        if(number%i==0){
            return 0;
        } 
    }
    
    // 如果区间 2到 number-1内的所有数都不能整除number,则number是素数 
    return 1;
} 

img

【以下回答由 GPT 生成】

问题分析: 编写一个程序,在给定的范围内输出所有的质数。质数是指只能被1和自身整除的正整数。我们可以采取以下步骤来解决这个问题:

  1. 首先,需要用户输入一个范围,即最小值(min)和最大值(max)。
  2. 然后,我们需要编写一个函数,检查一个数字是否是质数。这个函数会接收一个整数作为参数,然后判断它是否能被2到它的平方根之间的数字整除。如果不能,那么这个数字就是质数。
  3. 接下来,在一个循环中,从最小值(min)遍历到最大值(max),并使用刚才编写的函数来检查每个数字是否是质数。如果是质数,就输出这个数字。

下面是一个用C语言实现以上步骤的示例代码:

#include <stdio.h>
#include <math.h>

// 函数:判断一个数字是否是质数
int isPrime(int num) {
    if (num <= 1) {
        return 0; // 0和1不是质数
    }

    // 判断是否能被2到平方根之间的数字整除
    for (int i = 2; i <= sqrt(num); i++) {
        if (num % i == 0) {
            return 0; // 能被整除,不是质数
        }
    }

    return 1; // 是质数
}

int main() {
    int min, max;

    // 输入范围
    printf("请输入最小值(min):");
    scanf("%d", &min);
    printf("请输入最大值(max):");
    scanf("%d", &max);

    // 输出范围内的所有质数
    printf("范围内的所有质数为:\n");
    for (int num = min; num <= max; num++) {
        if (isPrime(num)) {
            printf("%d ", num);
        }
    }

    return 0;
}

这段代码首先定义了一个isPrime函数,用来判断一个数字是否是质数。接着在main函数中,接收用户输入的范围,然后遍历范围内的每个数字,使用isPrime函数来判断是否是质数,并按照题目要求输出。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^