C 语言程序,用于打印并统计给定范围内的所有素数


2022年5月1日, Learn eTutorial
2337

如果一个数只有两个约数,即“1”和“该数”本身,则称其为素数。为了更好地理解这个计算所有素数的 C 语言程序,我们始终建议您学习以下列出的 C 编程基础知识

什么是素数?

在这个 C 语言示例中,您将学习如何通过创建用户定义函数来打印两个数字(用户输入)之间的所有素数。一个除了自身和“1”之外不能被任何其他数字整除的数,称为素数。这个特性称为素性。例如,7 是一个素数,因为 7 只有两个约数,即“1”和“7”本身。

注意:最大的素数有“17,425,170”位。

如何在 C 语言中生成素数?

这个 C 语言程序需要生成特定范围内的素数,并且我们需要找出所显示素数的数量。

我们在这个 C 语言程序中使用了一种稍微复杂的逻辑,因为我们使用了嵌套的 for 循环。首先,检查给定的数字是否大于 2;如果不是,程序将退出并显示消息“不是一个有效的素数检查数字”。

现在使用嵌套的“for 循环”,在外层循环中,检查从“m”到“n”的数字,并设置 flag = 0,其中“m”和“n”是用户给定的下限和上限。然后,在内层 'for 循环' 中,我们获取并检查每个数字是否为素数。

  • m = 用户输入的下限.
  • n = 用户输入的上限.

让我们举一个例子来清楚地理解这个概念,让我们打印“3”到“10”之间的素数。在外层“for 循环”中,我们依次取“3”到“10”之间的每个数字。在内层“for 循环”中,检查每个数字是否为素数

在内层循环中取数字“3”,检查它是否只有两个约数;如果是,将标志设置为,然后我们打印数字 3 作为素数。然后返回外层循环取下一个数字,并在内层循环中进行素数检查,每次遇到素数,我们就递增计数器变量。

算法

步骤 1:包含头文件库以在 C 语言程序中使用内置函数。

步骤 2:使用 main() 函数开始程序执行。

步骤 3:使用 printfscanf 函数从用户那里获取系列下限和上限的值。

步骤 4:使用“if”条件检查上限是否大于 2。如果不满足,则打印“无法找到素数”。

步骤 5:否则,将下限复制到 temp 变量,并使用模运算符对“m”和 2 进行操作,如果结果为 ,则将变量“m”增加 1

步骤 6:打开外层 For 循环,从“m”到“n”,每次递增 2(无需检查偶数)

步骤 7:打开内层循环,从 2 到变量“i”值的一半,每次递增 1

步骤 8:检查“i”模“j”是否为零。如果为零,则将 Flag 设置为一,并中断循环。

步骤 9:如果内层循环后 Flag 为零,则将该数字打印为素数,并将 Count 递增 1

C 语言源代码

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

void main() 
{
  int M, N, i, j, flag, temp, count = 0;                            // declares the variables
  printf("Enter the value of M and N\n");
  scanf("%d %d", & M, & N);
  if (N < 2) 
  {
     printf("There are no primes upto %d\n", N);                   /*check the numbers are greater than 2*/
     exit(0);
   }
  printf("Prime numbers are\n");
  temp = M;
  if (M % 2 == 0) 
  {
     M++;
   }
  for (i = M; i <= N; i = i + 2)                   /* start of the outer loop and set the flag as zero */ 
  {
     flag = 0;
     for (j = 2; j <= i / 2; j++)                     /* inner loop to check the number is prime */ 
     {
        if ((i % j) == 0)
        {
           flag = 1;
           break;
        }
    }
    if (flag == 0) 
    {
       printf("%d\n", I);                               /* print the number is prime if flag is zero */
       count++;
    }
  }
  printf("Number of primes between %d and %d = %d\n", temp, N, count);
}
                                      

输出

Enter the value of M and N
15 45

Prime numbers are
17
19
23
29
31
37
41
43

Number of primes between 15  and 45 = 8