【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;
} 展开
这个程序(输入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;
} 展开
6个回答
展开全部
写的好乱。。。首先,这题只有一解么?!显然不是,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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我感觉没有问题,是不是cout输出尾部再加一个<<endl;好些。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序 逻辑 有问题,
显示 判断 n 是不是 素数,然后 就-2 了,下一次 n 就变成 n-2 了 ,这样 不行的
显示 判断 n 是不是 素数,然后 就-2 了,下一次 n 就变成 n-2 了 ,这样 不行的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没看懂题目,也没看到运行错误(我有点懒,呵呵)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
别的先不说, int 类型范围是多少?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |