显示一个范围之内的所有质数的 C 程序

在此示例中,您将学习使用 C 语言打印用户输入的两个数字之间的所有质数。

要理解此示例,您应该具备以下 C 语言编程主题的知识:

显示两个区间之间的质数

#include <stdio.h>

int main() {
   int low, high, i, flag;
   printf("Enter two numbers(intervals): ");
   scanf("%d %d", &low, &high);
   printf("Prime numbers between %d and %d are: ", low, high);

   // iteration until low is not equal to high
   while (low < high) {
      flag = 0;

      // ignore numbers less than 2
      if (low <= 1) {
         ++low;
         continue;
      }

      // if low is a non-prime number, flag will be 1
      for (i = 2; i <= low / 2; ++i) {

         if (low % i == 0) {
            flag = 1;
            break;
         }
      }

      if (flag == 0)
         printf("%d ", low);

      // to check prime for the next number
      // increase low by 1
      ++low;
   }

   return 0;
}

输出

Enter two numbers(intervals): 20
50
Prime numbers between 20 and 50 are: 23 29 31 37 41 43 47

在这个程序中, while 循环被迭代 ( high-low-1 ) 次。

在每次迭代中,检查是否 low 为素数,并将 low 的值递增 1 直到 low 等于 high

访问此页面以了解有关如何检查数字是否为质数的更多信息。

如果用户先输入较大的数字,则上述程序无法按预期工作。您可以通过交换数字来解决此问题。

当首先输入较大的数字时显示质数

#include <stdio.h>

int main() {
   int low, high, i, flag, temp;
   printf("Enter two numbers(intervals): ");
   scanf("%d %d", &low, &high);

   // swap numbers if low is greather than high
   if (low > high) {
      temp = low;
      low = high;
      high = temp;
   }

   printf("Prime numbers between %d and %d are: ", low, high);
   while (low < high) {
      flag = 0;

      // ignore numbers less than 2
      if (low <= 1) {
         ++low;
         continue;
      }

      for (i = 2; i <= low / 2; ++i) {
         if (low % i == 0) {
            flag = 1;
            break;
         }
      }
      if (flag == 0)
         printf("%d ", low);
      ++low;
   }

   return 0;
}

访问此页面以了解如何通过创建用户定义的函数显示两个数字之间的所有质数