c++ 中不知道哪里有错误 总是输出empty

题目:两个相差为2的素数称为素数对,如5和7、17和19等,本题目要求找出小于等于n范围内的素数对,当输入为10时,输出为35和57。每对素数为1行,两个数中间用空格隔开... 题目:两个相差为2的素数称为素数对,如5和7、17和19等,本题目要求找出小于等于n范围内的素数对,当输入为10时,输出为3 5和5 7。每对素数为1行,两个数中间用空格隔开。如果没有找到任何素数对,则输出empty。
#include<iostream.h>
int main()
{int a,b,n,j,gs,k,l,m;
cin>>b;
a=0;
for(n=2;n<=b;n++)
{j=1;gs=0;
while(j<=n)
{{if(n%j==0) gs++;
j++;}
if(gs==2)
{k=n+2;
for(n=k;n<=b;n++)
{l=1;m=0;
while(l<=k)
{if(k%l==0) m++;
l++;}
if(m==2)
{cout<<n<<" "<<k<<endl;
a++;}
}
}
}
}
if(a<1)
cout<<"empty";
}
展开
 我来答
kaixingui2012
2014-03-30 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6344万
展开全部
int is_prime( int n )
{
for( int i=2;i<=n/2 ; i++ )
{
if( n%i == 0 )
return 0 ; //不是素数
}
return 1 ; //是
}
int main()
{
int a ,flag=0;
cin >> a ;
for ( int i=2 ; i<=a-2 ; i++ )
{
if ( is_prime( i ) && is_prime( i+2 ) )
{
flag=1;
cout << i << " " << i+2 <<endl ;
}
}
if ( flag == 0 )
cout << "empty" <<endl ;
return 0;
}
匿名用户
2014-04-02
展开全部
2345678910111213141516171819202122#include<iostream>int main(){ using namespace std; double a,b,c,d,e,f,g; cout<<"输入: "; cin>>a; b=a+2; c=b/2+1; d=b/2-1; e=a-2; f=e/2+1; g=e/2-1;if (4<a) { cout<<c<<" "<<d<<endl; cout<<f<<" "<<g<<endl; } if (a<4) cout<<"empty"<<endl; return 0; }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式