==============1007=============
package com.sort.test.pat; import java.util.Scanner; /** * @Author: Yang_f * @CreateTime: 2024-08-07 * @Description: “素数对猜想”认为“存在无穷多对相邻且差为2的素数”。 */ public class b_1007 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int res = 0; for (int i = 5; i <= n; i++) { if(isprime(i) && isprime(i - 2)) res++; } System.out.println(res); } //判断是否是素数 private static boolean isprime(int n) { for (int i = 2; i * i <= n; i++) { if (n % i == 0) return false; } return true; } }
==============1008=============
18分,有一个案例未通过,求评论区教
package com.sort.test.pat; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; /** * @Author: Yang_f * @CreateTime: 2024-08-07 * @Description:在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置 */ public class b_1008 { static BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); static String next() throws IOException { return in.readLine(); } public static void main(String[] args) throws IOException { StringTokenizer st = new StringTokenizer(next()); int n = Integer.parseInt(st.nextToken()); //个数 int m = Integer.parseInt(st.nextToken()); //右移位数 st = new StringTokenizer(next()); int[] arr = new int[n + 1]; for (int i = 0; i < n; i++) //存值到数组 arr[i] = Integer.parseInt(st.nextToken()); int start = m % n; //计算右移m位后 左右分割的位置 int i = 0; for (int j = start; j < arr.length - 1; j++) { //右边依次和左边交换 swap(arr, i, j); //交换 i++; i = i == start ? 0 : i; //左边下标轮询 } StringBuilder sb = new StringBuilder(); for (int j = 0; j < arr.length - 1; j++) sb.append(arr[j] + " "); System.out.println(sb.toString().stripTrailing()); } private static void swap(int[] arr, int l, int r) { int temp = arr[l]; arr[l] = arr[r]; arr[r] = temp; } }