0
已解决
李牧晓
中级天翼
中级天翼
题目描述 Description
给你一个整数区间n,你需要找出该区间内所有的满足差为k的素数对
输入描述 Input Description
两个正整数n,k。1<=k<=n<=10000
输出描述 Output Description
所有小于等于n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出empty。
样例输入 Sample Input
6924 809
样例输出 Sample Output
2 811
请问素数对如何输出和判断?
李牧晓在2021-12-03 21:12:19追加了内容
#include<bits/stdc++.h>
using namespace std;
int cnt=1;
bool js(int x){
int j=2;
while(j<sqrt(x)&&x%j!=0){
j++;
}
return j>sqrt(x);
}
int main()
{
int n,m;
int q=0;
cin>>n>>m;
for(int i=1;i<=n;i++){
if(js(i)==1&&((m+i)-i)==m&&js(i+m)==1){
cout<<i<<" "<<m+i<<endl;
q=1;
}
}
if(q==0){
cout<<"empty";
}
return 0;
}
WA20代码
0
已采纳
李宜和
高级启示者
高级启示者
简单!
来个判断素数的函数
bool zs(int n){
......
return true;
}
定义个n,m,和标志位x
然后从2到n遍历
重要判断!:
if(zs(i)&&zs(i+m)){
解释:
看题,你需要找出该区间内所有的满足差为k(m)的素数对
但是,注意:
这里会有区间限制,所以特判
实现:zs(i)&&zs(i+m)&&(i+m)<=n
然后就是输出和标志位的事啦
循环外:
最后判断标志位就行了
0
0