输入一个整数
。保证
是偶数。
第一行输出一个整数
,代表满足条件的素数对中的较小者。
第二行输出一个整数
,代表满足条件的素数对中的较大者。
20
7 13
4
2 2
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int min = n/2;
for(int i=0; i<=n/2; i++){ //循环到值的一半
int count =0;
for(int j=2; j<i; j++){
if(i%j == 0){
count++; //统计能否被本身和1以外的数整除
}
if((n-i)%j ==0){
count++; //统计能否被本身和1以外的数整除
}
}
if(count ==0){ //说明是质数
int temp = n-i-i;
min = Math.min(min, temp); //求最小的差
}
}
System.out.println(n/2-min/2);
System.out.println(n/2+min/2);
}
} import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
for (int i = num/2; i >= 1 ; i--) {
if(isTrue(i)&&isTrue(num-i)){
System.out.println(i);
System.out.println(num-i);
return;
}
}
}
public static boolean isTrue(int n){
if(n<=3)
return true;
if(n%2==0||n%3==0)
return false;
for (int i = 6; i <= n/2; i+=6) {
if(n%(i-1)==0||n%(i+1)==0)
return false;
}
return true;
}
} import java.util.Scanner;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t = in.nextInt();
TreeSet<Integer> primes = build(t);
int a;
for(a = t/2; a>1; a--){
if (primes.contains(a) && primes.contains(t-a)) {
break;
}
}
System.out.println(a);
System.out.print(t-a);
}
static TreeSet<Integer> build(int n) {
TreeSet<Integer> result = new TreeSet<>();
result.add(2);
bloop:
for (int i = 3; i <= n; i++) {
int to = (int) (Math.sqrt(i) + 0.5);
for (int e : result) {
if (e > to) {
break;
}
if (i % e == 0) {
continue bloop;
}
}
result.add(i);
}
return result;
}
} import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m1 = n / 2;
int m2 = n / 2;
while( !isPrime(m1) || !isPrime(m2)){
m1--;
m2++;
}
System.out.println(m1);
System.out.println(m2);
}
public static boolean isPrime(int n){
for(int i = 2; i <= n / 2; i++){
if(n % i == 0) return false;
}
return true;
}
} import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()){
int[] ary = new int[1000];
int num = sc.nextInt();
int count = 0;
for(int i = 2;i < num;i++){ //1不算质数
if(isPrime(i)){ //如果是质数,从0位置开始依次放进数组
ary[count] = i;
count++;
}
}
int min = ary[count-1];
int m = 0, n = 0;
f1:for(int i = 0;i < count;i++){ //直接穷举,我之前是用1/2处开始一左一右寻找,但是示例118竟然两个都在右边,
//与其这样一个一个面对奇怪的示例,不如直接穷举
for(int j = 0;j < count;j++){
if((num == ary[i] + ary[j]) && (Math.abs(ary[i] - ary[j]) < min)){
m = ary[i];
n = ary[j];
min = Math.abs(ary[i] - ary[j]);
}
}
}
System.out.println(m);
System.out.println(n);
}
sc.close();
}
public static boolean isPrime(int num){ //判断是否为质数
for(int i = 2;i < num;i++){
if(num % i == 0){
return false;
}
}
return true;
}
} import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = in.nextInt();
// 偶数
if (num % 2 == 0) {
int m = num / 2 ;
int m1 = m;
int m2 = m;
while (isTrue(m1) || isTrue(m2)) {
m1--;
m2++;
}
System.out.println(m1);
System.out.println(m2);
}
}
private static boolean isTrue(int num) {
boolean r = false;
for (int i = 2; i < num; i++) {
if (num % i == 0) {
r = true;
break;
}
}
return r;
}
} import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
int number = Integer.parseInt(line);
// 如果一个数的两个素数对差值最小,这两个数接近number/2,所以从number/2开始循环,找到就退出循环
for (int i = number / 2; i > 1; i--) {
if (isPrime(i) && isPrime((number - i))) {
System.out.println(i);
System.out.println(number - i);
break;
}
}
}
/**
* 判断一个数是否位素数
*
* @param number
* @return
*/
private static boolean isPrime(int number) {
for (int i = 2; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
} import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
/*while (in.hasNextInt()) { // 注意 while 处理多个 case
int a = in.nextInt();
int b = in.nextInt();
System.out.println(a + b);
}*/
int n = in.nextInt();
int a = n/2;
int b = n/2;
while(a>=2 && b<n){
if(prim(a) && prim(b)){
System.out.println(a);
System.out.println(b);
break;
}else{
a--;
b++;
}
}
}
public static boolean prim(int num){
for(int i = 2 ; i<num ; i++){
if(num%i == 0){
return false;
}
}
return true;
}
} import java.util.Scanner;
import java.io.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) throws Exception{
//素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
String str = null;
while((str=buf.readLine())!=null){
int num=Integer.parseInt(str);
int sub = Integer.MAX_VALUE; //保存两个质数之间的差值
int[] res = new int[2];
for(int i=2;i<=num/2;i++){
if(isPrime(i)==true&&isPrime(num-i)==true){
if(num-2*i<sub) sub = num-2*i;
res[0] = i;
res[1] = num-i;
}
}
System.out.println(res[0]);
System.out.println(res[1]);
}
}
public static boolean isPrime(int num){ //判断一个数是否为质数(素数)
for(int i=2;i<=num/2;i++){
if(num%i==0) return false;
}
return true;
}
} import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int a = in.nextInt();
int b = a/2;
for(int i = b; i > 0; i--) { //从中位数开始判断,减少循环次数
if(check(i) && check(a-i)) {
System.out.println(i);
System.out.println(a-i);
break;
}
}
}
}
public static boolean check(int num) {
for(int i = 2; i <= Math.sqrt(num); i++) {
if(num % i == 0) {
return false;
}
}
return true;
}
}
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int sum = in.nextInt();
for (int i = sum / 2; i < sum; i++) {
if (isPrime(i) && isPrime(sum - i)) {
System.out.println(sum - i);
System.out.println(i);
return;
}
}
}
public static Boolean isPrime(Integer x) {
if (x < 2)
return true;
for (int i = 2; i <= Math.sqrt(x); i++) {
if (x % i == 0)
return false;
}
return true;
}
} import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
int k = in.nextInt();
int a = k/2;
int b = k/2;
while(a>0){
if(isPrime(a)&&isPrime(b)){
break;
}
a--;
b++;
}
System.out.println(a);
System.out.println(b);
}
}
public static boolean isPrime(int n){
for(int i=2;i<n;i++){
if(n%i==0){return false;}
}
return true;
}
}