第二种方法应该加一行
main()
{int n,i
float e=1.0,p=1.0
for(n=1n<=10n++)
{p=1.0 /*加这一行*/
for(i=1i<=ni++)
p*=i
e=e+1.0/p}
printf("e=%f\n",e)}
输出前5个默尼森数。P是素数且M也是素数(M=2P-1),则称M为默尼森数。例如,p=5, M=2P-1=31,5和31都是素数,因此31是默尼森数。
输出结果应为:3 7 31 127 8191
算法提示:
1. p=2, c=5
2. 当c >0时重复做以下操作:
(1) 若p和m(m=2p-1)都是素数,则输出m且c=c-1
(2) p=p+1
#include<stdio.h>
#include<math.h>
#include<conio.h>
main()
{ int p,m,c,a,b,i,n
p=2c=5
while(c>0)
{m=pow(2,p)-1
{a=sqrt(p)
for(i=2i<=ai++)
if(p%i==0)break
b=sqrt(m)
for(n=2n<=bn++)
if(m%n==0)break}
if(i>a&&n>b)
{printf("%d\t",m)
c=c-1}
p=p+1}
getch()}