c语言双重循环

Python038

c语言双重循环,第1张

书上写错了

第二种方法应该加一行

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()}