NOJ的一道题 求助大神

onlyformyangel 2017-10-14 08:08:34

这是我写的程序 不知道为什么结果不对
#include<iostream>
using namespace std;
int sushu(int x)
{
int i1;
for(i1=2;i1<x;i1++) if(x%i1==0) return 0;
return 1;
}
int main()
{
int n,i,j,k,L1,A[100],B[100],m=1;
cin>>n;
for(i=0;;i=i+100){for(j=1;j<100;j++){k=sushu(j+i);
if(k==1) goto L1;
if(j==99) {A[m]=i;
B[m]=i+99;
m++;}
}
L1: break;
}
cout<<A[n]<<" "<<B[n];
return 0;
}
...全文
544 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
开源学开源 2017-10-15
  • 打赏
  • 举报
回复
开源学开源 2017-10-15
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
int sushu(size_t x)
{

for (size_t i1 = 2; i1 < x; i1++)
{
if (x%i1 == 0)
return 0;
}

return 1;
}
int main()
{
size_t n = 1, k, nstart = 0, nend = 0, m = 0;
// cout << "input number : " << endl;
// cin >> n;
for (size_t i = 0;i < 2000000; i += 100)
{
for (size_t j = i + 1; j< i + 100; j++)
{
k = sushu(j);
if (k == 1)
break;
if (j == i + 99)
{
nstart = i;
nend = i + 99;
m++;
}
}
if (m == n)
{
break;
}

}
cout << nstart << endl << nend << endl;
return 0;
}

开源学开源 2017-10-14
  • 打赏
  • 举报
回复
可能是你这个素数返回的问题,你把k==1换成k==0试试!还有就是不要用goto,直接把break写在后面就行了!还有一个问题就是设置一个跳出所有循环的条件,比如m=n则把第一个循环也结束掉!

65,201

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧