注册 登录
编程论坛 C++教室

求解,求1到n之间素数的倒数之和

mai526625501 发布于 2011-04-04 14:35, 2501 次点击
求1到n之间素数的倒数之和,即1/2+1/3+......
我做得如下,但是结果计算不出来。。。


#include <iostream.h>

void main()
{
 int m,j,n;cout<<"input n:";cin>>n;
 int count=0;double a,sum;
 for(m=1;m<=n;m++)

 {
  for(j=2;j<m;j++)
   if(m%j==0) break;
  if(j>=m)
  {
   count++;a=1/m;
   cout<<a;cout<<"*";
   if(count%5==0)
    cout<<endl;
  }
  else continue;
  }
 sum=0;sum=sum+a;
 cout<<sum-1;
}
7 回复
#2
qq10235692232011-04-04 17:17
#include <iostream.h>

void main()
{
int m,j,n;
cout<<"input n:";
cin>>n;
int count=0;
double a,sum=0;
 for(m=2;m<=n;m++)
 {
  for(j=2;j<m;j++)
   if(m%j==0) break;
  if(j==m)
   {
   count++;
   a=1.0d/m;
   sum+=a;
   cout<<a;
   cout<<"*";
   if(count%5==0)
   cout<<endl;
    }
  }
 cout<<endl<<"sum="<<sum<<endl;
}

[ 本帖最后由 qq1023569223 于 2011-4-4 17:40 编辑 ]
#3
lixinyuan2242011-04-04 18:08
楼上的解决了!
#4
shamoor2011-04-04 20:01
以下是引用qq1023569223在2011-4-4 17:17:56的发言:

#include

void main()
{
int m,j,n;
cout<<"input n:";
cin>>n;
int count=0;
double a,sum=0;
 for(m=2;m<=n;m++)
 {
  for(j=2;j<M;J++)
   if(m%j==0) break;
  if(j==m)
   {
   count++;
   a=1.0d/m;
   sum+=a;
   cout<<A;
   cout<<"*";
   if(count%5==0)
   cout<<ENDL;
    }
  }
 cout<
a=1.0d/m 是什么意思,就这句不懂。
#5
ljt2011-04-04 22:10
回复 4楼 shamoor
其实是一个类型转换意思,如果是1的话,默认得到的值是整形
#6
qq10235692232011-04-05 02:46
1  //int型
1.0 //float型
1.0f  //float型
1.0d  //double型
1/n   (n>1,int 型) //恒等于0

[ 本帖最后由 qq1023569223 于 2011-4-5 09:20 编辑 ]
#7
lucky5635912011-04-05 08:36
判断素数只需要判断到sqrt(m)
#8
yh31632022-03-12 09:13
听懂了
1