问题标题: 酷町堂:1613 寻找素数对

0
0
已解决
潘思呈
潘思呈
高级光能
高级光能

#include<iostream>

using namespace std;

//判断是否是质数

bool jc(int n){

for(int i=2;i<=n-1;i++){

if(n%i==0){

return false;

}

}

return true;

}

int main(){

int n,k;

cin>>n>>k;;

bool flag=false;

for(int i=2;i<=n-2;i++){

if(jc(i)&&jc(i+k)){

cout<<i<<" "<<i+k<<endl;

flag=true;

}

}

if(flag==false){

cout<<"empty";

}

return 0;

}

题目:

给你一个整数区间n,你需要找出该区间内所有的满足差为k的素数对

输入描述 Input De**ion

两个正整数n,k。1<=k<=n<=10000

输出描述 Output De**ion

所有小于等于n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出empty。

样例输入 Sample Input

6924 809

样例输出 Sample Output

2 811

潘思呈在2023-10-01 11:23:28追加了内容

啊啊啊啊

我要急S了


0
已采纳
彭志杰
彭志杰
初级天翼
初级天翼

首先,你可以在输入后加个判断:如果n<=k||n==1就输出empty

之后,还要在17行加个判断:i+k<=n

AC

0
0
0
被禁言 任熠同
任熠同
修练者
修练者

main函数里面的for循环是从2到n,for循环里面判断:如果i是质数,那么再来一重循环,从i+1到a。再判断:如果j是质数并且j-i==k

输出i,j,然后flag=true

0
周毅
周毅
资深光能
资深光能

你这题整体思路没问题,只要稍加修改就行了。首先在判断指数的函数的第一行要加上这一个特判if(x==1)return false;否则当n为1时你原来的函数也会把他判成质数,还有,主函数for循环的终止条件是n-k而不是n-2,因为你要判断i和i+1是否是质数所以要考虑越界的问题。

这样改一下差不多就行了。

0
周毅
周毅
资深光能
资深光能

对了,是i+k,不好意思打错了

我要回答