如果一个数只有两个约数,即“1”和“该数”本身,则称其为素数。为了更好地理解这个计算所有素数的 C 语言程序,我们始终建议您学习以下列出的 C 编程基础知识
在这个 C 语言示例中,您将学习如何通过创建用户定义函数来打印两个数字(用户输入)之间的所有素数。一个除了自身和“1”之外不能被任何其他数字整除的数,称为素数。这个特性称为素性。例如,7 是一个素数,因为 7 只有两个约数,即“1”和“7”本身。
注意:最大的素数有“17,425,170”位。
这个 C 语言程序需要生成特定范围内的素数,并且我们需要找出所显示素数的数量。
我们在这个 C 语言程序中使用了一种稍微复杂的逻辑,因为我们使用了嵌套的 for 循环。首先,检查给定的数字是否大于 2;如果不是,程序将退出并显示消息“不是一个有效的素数检查数字”。
现在使用嵌套的“for 循环”,在外层循环中,检查从“m”到“n”的数字,并设置 flag = 0,其中“m”和“n”是用户给定的下限和上限。然后,在内层 'for 循环' 中,我们获取并检查每个数字是否为素数。
让我们举一个例子来清楚地理解这个概念,让我们打印“3”到“10”之间的素数。在外层“for 循环”中,我们依次取“3”到“10”之间的每个数字。在内层“for 循环”中,检查每个数字是否为素数。
在内层循环中取数字“3”,检查它是否只有两个约数;如果是,将标志设置为零,然后我们打印数字 3 作为素数。然后返回外层循环取下一个数字,并在内层循环中进行素数检查,每次遇到素数,我们就递增计数器变量。
步骤 1:包含头文件库以在 C 语言程序中使用内置函数。
步骤 2:使用 main() 函数开始程序执行。
步骤 3:使用 printf 和 scanf 函数从用户那里获取系列下限和上限的值。
步骤 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。
#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