【C++问题】我写了一个程序,不知道错在哪里。

在线测评显示输出结果错误,但不知道错在哪里,求助T_T这个程序(输入n)用来输出“不超过n且x和x-2都是素数”的x和x-2的值,5<=n<=1,0000,0000代码如... 在线测评显示输出结果错误,但不知道错在哪里,求助 T_T
这个程序(输入n)用来输出 “不超过n 且 x 和 x-2 都是素数 ” 的 x 和 x-2 的值,5<=n<=1,0000,0000
代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int isP(int n)
{
int i;
for(i=2;i<=sqrt(n);i++){
if(n%i==0){return 0;}
}
return 1;

}
int main(){
int n;
cin>>n;
if(n%2==0){n-=1;}
while(1){
if(isP(n)==0){n-=2;}
else if(isP(n-2)==0){n-=4;}
else{break;}
}
cout<<n<<" "<<n-2;

return 0;
}
展开
 我来答
郝在益
2014-02-17 · TA获得超过2079个赞
知道小有建树答主
回答量:1496
采纳率:54%
帮助的人:634万
展开全部
#include <iostream>
#include <cmath>
using namespace std;
int isP(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
return 0;
}
return 1;
}
int main()
{
int n,i;
cin>>n;
for(i=5;i<=n;i=i+2) //为什么是从5开始,为什么是+2,请自己思考
{
if(isP(i) + isP(i-2) >= 2)
cout<<i<<" "<<i-2<<endl;
}

return 0;
}

HarryNR
2014-02-17 · TA获得超过929个赞
知道小有建树答主
回答量:1013
采纳率:33%
帮助的人:798万
展开全部

写的好乱。。。首先,这题只有一解么?!显然不是,3&5,5&7就有两解了,你这写的能对?!

判断是否是素数,直接返回bool不就好了。

bool isP(int n)
{
    if (n < 2)
        return false;
    else
    {
    // 懒得抄写了,改成return true或者false;
    }
}

if(n%2==0){n-=1;}     // 想法很好,下次最好加个注释,别人比较容易理解。


问题就是循环这里:

while(n > 1)
{
if(isP(n) && isP(n-2))
  cout << n << " " << n-2 << endl;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cooke1234
2014-02-17 · TA获得超过6861个赞
知道大有可为答主
回答量:4617
采纳率:72%
帮助的人:3617万
展开全部
我感觉没有问题,是不是cout输出尾部再加一个<<endl;好些。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leiqianlq
2014-02-17 · TA获得超过115个赞
知道小有建树答主
回答量:624
采纳率:0%
帮助的人:276万
展开全部
程序 逻辑 有问题,
显示 判断 n 是不是 素数,然后 就-2 了,下一次 n 就变成 n-2 了 ,这样 不行的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友862b31c
2014-02-17 · TA获得超过1529个赞
知道小有建树答主
回答量:1045
采纳率:100%
帮助的人:825万
展开全部
没看懂题目,也没看到运行错误(我有点懒,呵呵)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Getline
2014-02-17 · 科技领域创作者
Getline
采纳数:405 获赞数:2705

向TA提问 私信TA
展开全部
别的先不说, int 类型范围是多少?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式