C语言代码实现梅森素数查找 - 100以内梅森素数输出
这个程序是用来找出100以内的梅森素数的。梅森素数是指只有2的整数次幂减1的素数,例如7是梅森素数,因为它等于2的3次方减1。
这个程序先定义了一个函数msprime,用来判断一个数是否为梅森素数。这个函数的参数m是要判断的数。函数内部使用了一个while循环和一个for循环。
while循环的作用是找到m的第一个因子i。如果m不能被i整除,就继续找下一个因子。如果m等于i,说明m是一个素数。这里用到了一个很常见的判断素数的方法:从2开始,依次判断m能否被2,3,4,...,m-1整除,如果都不能整除,说明m是一个素数。
for循环的作用是找到一个数p,使得p等于2的整数次幂减1,并且p等于m。如果找到了这样的p,就返回2的幂次k,因为p等于2的k次幂减1。
程序的主函数main就是用来遍历100以内的每个数,然后调用msprime函数来判断是否为梅森素数。如果是,就输出这个数和它的幂次k。
总的来说,这个程序就是通过两层循环来找出100以内的梅森素数,并输出它们的幂次。
/*---------------------------------------------------------------------- 【程序设计】
题目:梅森素数是指等于2的整数次幂减1的素数。 例如:7是梅森素数,它等于2的3次方减1。 示例程序为输出100以内的梅森素数,运行结果如样张所示。
注意:请勿改动程序中的其他内容。 ----------------------------------------------------------------------*/ #include <stdio.h> #include <string.h> #include <ctype.h> #include <math.h> int msprime(int m ) { int i = 2,k,p; while ( i <= m && (m%i)) i++;
if(m==i)
{
for(k=1;;k++)
{
p=pow(2,k)-1;
if(p>m)
break;
else if(p==m)
return k;
}
}
return 0;
} int main() { int m,k; for(m=2;m<=100;m++) if (k=msprime(m)) printf('%d=2^%d-1\n',m,k); return 0; }
原文地址: https://www.cveoy.top/t/topic/npPF 著作权归作者所有。请勿转载和采集!