gpt4 book ai didi

java - 质数校验java

转载 作者:搜寻专家 更新时间:2023-11-01 03:15:36 25 4
gpt4 key购买 nike

编写一个程序读取n个数字。指定为输入的第一个数字将是 n。接下来,程序应该读取 n 个整数。

程序应该检查每个数字是否为素数以及它的倒数是否为素数。

按升序显示所有这些数字。

考虑下面的输入和输出示例:

输入:7111223197113101

输出:

711101113

我的代码

public class Prime {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
int temp;

int[] a = new int [x];
int[] r = new int [x];
int[]c = new int[a.length+r.length];
int[] rev = new int [x];

for(int i=0;i<x;i++){
a[i] = sc.nextInt();
rev[i]=a[i];
}

for(int i = 0; i < a.length; i++) {
while(rev[i] != 0) {
r[i] = r[i] * 10;
r[i] = r[i] + rev[i]%10;
rev[i] = rev[i]/10;
}
}

for(int i = 0; i < a.length; i++) {
boolean isPrime = true;
for (int j = 2; j < i; j++) {
if((a[i]%j==0) || (r[i]%j==0)) {
isPrime = false;
break;
}
}
if(isPrime)
System.out.println(a[i]);
System.out.println(r[i]);
}
}
}

我卡在某个地方我不知道如何消除重复的否,最后如何合并数组,并且当我输入和 2 时它打印 1 和 2 作为素数

最佳答案

您需要使用 TreeSet - 它只包含不同的元素并以排序的形式给出结果。您可以引用以下代码-

  Set<Integer> set = new TreeSet<>();
for(int i = 0; i < a.length; i++) {
boolean isPrime = true;
if(isPrime(a[i]) && isPrime(r[i]))
set.add(a[i]);
}
Iterator it = set.iterator();
while(it.hasNext())
System.out.print(it.next() + " ");

同时创建一个检查素数的函数 -

private static boolean isPrime(int num) {
if(num==1) return false;
for(int i = 2; i <= num/2; ++i)
{
if(num % i == 0)
{
return false;
}
}
return true;
}

关于java - 质数校验java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54643034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com