pat乙级-1007-1008(java)

==============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;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值