1/2,1/3,1/5,1/7.......用C++编程就前20项的和

如题所述

第1个回答  2011-12-09
#include <iostream>

bool isPrime(int n)
{
if(n<2)
{
return false;
}
if(n==2)
{
return true;
}
if(n%2==0)
{
return false;
}
for(int i=3; i*i<=n; i+=2)
{
if(n%i==0)
{
return false;
}
}
return true;
}

int main()
{
int count = 0;
int n = 2;
double sum = 0.0;
while(count<20)
{
if(isPrime(n))
{
if(count!=0)
{
std::cout<<"+1/"<<n;
}
else
{
std::cout<<"1/"<<n;
}
sum += 1.0/n;
count ++;
}
n++;
}
std::cout<<"="<<sum<<std::endl;
return 0;
}
第2个回答  2011-12-09
#include<iostream>
using namespace std;
const int NUM=20;
int main()
{
int a[NUM]; //存放分母,也就是前20个素数。
int i=2;
int j;
int n=0;
while(1) //查找前20个素数
{
for(j=2;j<i;j++)
{
if(i%j ==0)
{
i++;
continue;
}
}
a[n]=i;
n++;
i++;
if(n==NUM)
{
break;
}
}
double sum =0.0;
for(j=0;j<NUM;j++)
{
sum += 1.0/a[j];
}
cout<<sum<<endl;
return 0;
}
第3个回答  2011-12-09
要是分母是素数的话
int sushu(int a)
{
int i,c=0;
for(i=2;i*i<=a;i++)
if(a%i==0)
return 0;
retrun a;
}
main()
{
int i,c=0;
float sum=0;
for(i=2;c<=20;i++)
if(sushu(i))
{
sum+=1.0/i;
c++;
}
printf("%.6f",sum);
}
第4个回答  2011-12-09
//我理解是从2开始的20个素数的倒数和。
#include<stdio.h>
int fun(int m)
{
int i;
if(m<2) return 0;
for(i=2;i<=m/2;i++)
if(m%i==0) return 0;
return 1;
}
void main( )
{
int n=0,i=2;
double s=0;
while (n<20)
{
if(fun(i))
{
s+=1.0/i;
n++;
}
i++;
}
printf("sum=%f\n",s);
}

//运行结果:
sum=1.742867
请按任意键继续. . .
第5个回答  2011-12-09
#include <iostream>
using namespace std;

int isPrime(int n) //判断一个数是不是素数
{
for (int i=2; i<=n/2; i++)
{
if (n%i==0)
return 0;
}
return 1;
}

int main(int argc, char* argv[])
{
int i = 2, cnt = 0;
double sum = 0.0;
while(1)
{
if (isPrime(i))
{
sum += 1.0/i;
cout << i << " ";
cnt++;
if(cnt==20)
break;
}
i++;
}
cout << "sum=" << sum << endl;
return 0;
}