首页 > 试题广场 >

查找组成一个偶数最接近的两个素数

[编程题]查找组成一个偶数最接近的两个素数
  • 热度指数:158582 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的偶数 n,找出两个素数 a,b,满足:
\hspace{23pt}\bullet\,它们的和等于 n
\hspace{23pt}\bullet\,它们的差值的绝对值最小。

\hspace{15pt}我们可以证明,a,b 一定存在,从小到大输出满足条件的素数对。

输入描述:
\hspace{15pt}输入一个整数 n \left(4 \leqq n \leqq 10^3\right)。保证 n 是偶数。


输出描述:
\hspace{15pt}第一行输出一个整数 a,代表满足条件的素数对中的较小者。
\hspace{15pt}第二行输出一个整数 b,代表满足条件的素数对中的较大者。
示例1

输入

20

输出

7
13
示例2

输入

4

输出

2
2
头像 人生苦短,但求成长
发表于 2022-02-09 10:54:04
def isSuShu(x): if x <= 2: return True else: for i in range(2, int(x ** 0.5) + 1): if x % i == 0: return Fa 展开全文
头像 江南好___
发表于 2021-12-08 16:52:00
描述 题目描述 任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。 示例 输入: 20 输出: 7 13 知识点:穷举,贪心,数组,基础数学 难度:⭐⭐⭐ 题解 方法一:穷举 解题思路: 对于一个数字,我们可以从2遍 展开全文
头像 牛客877238306号
发表于 2021-10-26 10:25:32
从输入的偶数的一半开始找,到2,找出其中所有素数,再判断另外一个数是不是素数 while True: try: n = int(input()) prime = [] for i in range(int(n/2), 1,-1): 展开全文
头像 派仔
发表于 2020-08-12 17:36:10
import java.util.*; public class Main { public Main() { } private boolean isPrime(int num) { for (int i = 2; i <= num/i; i++ 展开全文
头像 冷酷的杀猪匠
发表于 2022-03-03 23:43:14
#include<stdio.h> #include<math.h> int is_prim(int a){ int prim = 1; int x = sqrt(a)+1; for(int i=2; i<x; i++){ if(a%i==0){ 展开全文
头像 摸鱼学大师
发表于 2021-10-27 19:00:59
题目的主要信息: 任意一个大于2的偶数都可以由2个素数组成,组成偶数的2个素数有很多种情况 求组成指定偶数的两个素数差值最小的素数对 一定输出大于2的偶数,最大不超过1000 方法一:穷举 具体做法: 对于一个数字,我们可以从2遍历到n,寻找两个加数都是素数的情况,然后比较素数之间的差值,把要输 展开全文
头像 任致志
发表于 2022-06-14 17:42:35
""" 思路:二分后枚举 列出包含中间界n//2及以内的所有素数 从最后一个素数i往前找,若第一出现的n-i也是素数,则i与n-i是所找素数对中间距最小的一对。 """ def isPrime(i):     """判断是否为素数的函数""" &n 展开全文
头像 无情派大星
发表于 2020-03-03 23:57:41
import java.util.*; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.h 展开全文
头像 fuxiaoxian
发表于 2021-10-10 18:25:08
import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); w 展开全文
头像 轱辘轱辘啊咧
发表于 2022-02-04 16:42:25
python3 循环+判断,两行代码搞定: while True: try: n=int(input()) i=int(n/2) //从中间数开始判断 j=n-i a=2 while a<i: //a是除数,判断i是否是质数 j=n-i if a==i 展开全文