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

0
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
董妙一
董妙一
资深守护
资深守护

1、函数要写一个判断素数的函数

思路是找n的因数,如果有,则不是素数,没有,则是素数

2、再循环(注意:不能让i+m大于n)

3、如果i和i+m都是素数,输出,标志位带上

加油!

我要回答