C语言——判断素数(质数)

要判断一个数是否为素数(质数),可以使用以下算法:

  1. 首先,判断这个数是否小于等于1。若小于等于1,则不是素数。

  2. 然后,从2开始逐个判断这个数能否被小于它的数整除。若能整除,则不是素数。

  3. 判断的范围可以限制在小于等于这个数的平方根。

以下是用C语言编写的示例代码:

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

int isPrime(int num) {
  if (num <= 1) {
    return 0;
  }
  
  int i;
  int sqrt_num = sqrt(num);
  for (i = 2; i <= sqrt_num; i++) {
    if (num % i == 0) {
      return 0;
    }
  }
  
  return 1;
}

int main() {
  int num;
  printf("请输入一个整数:");
  scanf("%d", &num);
  
  if (isPrime(num)) {
    printf("%d是素数。\n", num);
  } else {
    printf("%d不是素数。\n", num);
  }
  
  return 0;
}

以上代码中,isPrime 函数用于判断一个数是否为素数,返回结果为1表示是素数,返回结果为0表示不是素数。main 函数从用户输入获取一个整数,并调用 isPrime 函数进行判断,并输出结果。

这段代码可以分成两个部分来分析:isPrime函数和main函数。

isPrime函数

int isPrime(int num) {
  if (num <= 1) {
    return 0;
  }
  
  int i;
  int sqrt_num = sqrt(num);
  for (i = 2; i <= sqrt_num; i++) {
    if (num % i == 0) {
      return 0;
    }
  }
  
  return 1;
}

这个函数用于判断一个整数是否为素数。它接受一个整数作为参数,并返回一个整数作为判断结果(1表示素数,0表示非素数)。函数首先检查输入的数是否小于等于1,若是,则直接返回0。然后它使用循环从2开始逐个检查能否整除输入的数,循环的范围限制在小于等于输入数的平方根。如果能整除,则返回0,否则返回1。

main函数

int main() {
  int num;
  printf("请输入一个整数:");
  scanf("%d", &num);
  
  if (isPrime(num)) {
    printf("%d是素数。\n", num);
  } else {
    printf("%d不是素数。\n", num);
  }
  
  return 0;
}

这个函数是程序的入口,它提示用户输入一个整数,然后通过调用isPrime函数来判断输入的整数是否为素数。根据isPrime函数的返回值(1或0),输出相应的结果。

猜你喜欢

转载自blog.csdn.net/weixin_66547608/article/details/134913785