C语言程序:计算2的幂减1的素数
这段代码的功能是计算 2 的幂减 1 的素数。当输入 n 时,程序会迭代计算 2 的 1 到 n 次幂减 1 的值,并判断其是否为素数,如果是素数则打印出来,并统计素数的个数。
你可以运行这段代码,输入一个整数 n 来查看输出结果。请确保你的编译环境中包含了相关的头文件和库文件(stdio.h 和 math.h),并确保编译器能够支持 C 语言。
运行结果示例:
Input n:
5
2^1-1=1
2^2-1=3
2^4-1=15
count=3
这个例子中,输入 n 为 5,程序计算了 2 的 1、2 和 4 次幂减 1 后的值,并找出了其中的素数。最后,程序输出了素数的个数为 3。
#include <stdio.h>
#include <math.h>
int main()
{
int j, x = 0, s = 0, n, a = 0;
double t = 2, m;
printf("Input n:\n");
scanf("%d", &a);
for (n = 1; n <= a; n++) // 迭代从 1 到用户输入的整数 a
{
t *= 2; // t = t * 2
m = t - 1; // 检查 m 是不是素数 x=1 否,x=0 是
x = 0; // 内部循环没有找到 m 的因子,因此 m 是素数,所以 s 会增加 1,同时程序会打印出 m
for (j = 2; j < sqrt(m) + 1; j += 1) // j=j+1 sqrt 开平方
{
if (fmod(m, j) == 0) // fmod 求余数
{
x = 1; // 内部循环找到了 m 的因子,m 不是素数,s 不会增加,不会打印出 m
break;
}
}
if (x == 0)
{
s += 1; // s=s+1
printf("2^%d-1=%.0f\n", n, m);
}
}
printf("count=%d\n", s);
return 0;
}
原文地址: https://www.cveoy.top/t/topic/bSIc 著作权归作者所有。请勿转载和采集!