当前位置: 首页 > 知识库问答 >
问题:

如何在输出中再添加24个素数,并将其从最低到最高排列?

苗运珧
2023-03-14

我现在被要求创建一个机器代码,它将生成多个不同的随机素数,并将其输出从最高素数显示到最低素数

我已经做了一个isPrime方法,输出只给我1个随机质数。

package isPrime.isPrime;
import java.util.Scanner;
import java.util.Random;

public class Primusnumberus {
    public static void main(String[] args) {
        int num = 0;
        Random rand = new Random(); 
        num = rand.nextInt(1000) + 1;

        while (!isPrime(num)) {          
            num = rand.nextInt(1000) + 1;
        }
        System.out.println(num);  
    }


    private static boolean isPrime(int inputNum){
        if (inputNum <= 3 || inputNum % 2 == 0) 
            return inputNum == 2 || inputNum == 3; 
        int divisor = 3;
        while ((divisor <= Math.sqrt(inputNum)) && (inputNum % divisor != 0)) 
            divisor += 2; 
        return inputNum % divisor != 0; 
    }
}

我希望731 11 971 53 17的输出

共有2个答案

戴原
2023-03-14

你可以运行一个循环,将这些随机素数添加到一个列表中。然后对列表进行排序并在末尾打印,如下所示,

package isPrime.isPrime;
import java.util.*;

public class Primusnumberus {
    public static void main(String[] args) {
        int num = 0;
        int numberCount = 24;
        int counter = 0;
        Random rand = new Random();
        List<Integer> primeList = new ArrayList<>();

        while (counter < numberCount) {
            num = rand.nextInt(1000) + 1;
            while (!isPrime(num)) {
                num = rand.nextInt(1000) + 1;
            }
            if (!primeList.contains(num)) {
                primeList.add(num);
                counter ++;
            }
        }
        Collections.sort(primeList);
        System.out.println(primeList);
    }

    private static boolean isPrime(int inputNum){
        if (inputNum <= 3 || inputNum % 2 == 0)
            return inputNum == 2 || inputNum == 3;
        int divisor = 3;
        while ((divisor <= Math.sqrt(inputNum)) && (inputNum % divisor != 0))
            divisor += 2;
        return inputNum % divisor != 0;
    }
}

我刚刚根据你的要求更新了你的代码。但这并不是一个获得随机素数的好方法,因为当计数增加时可能需要一些时间。

周承天
2023-03-14

例如,你必须在循环中生成素数

for(int i = 0; i < 25; i++){ // If you do not want 25 Primes change it here
    num = rand.nextInt(1000) + 1;

    while (!isPrime(num)) {          
        num = rand.nextInt(1000) + 1;
    }
    System.out.println(num);
}

顺便说一句:使用Random生成它们可能会导致程序的执行时间非常长。如果你只需要1001的素数,我建议你把它们全部生成,然后随机选择。(例如使用列表)

 类似资料:
  • 问题内容: 我想按从高到低的顺序进行排序。 问题答案: java.util.Collections.sort(列表,比较器) 您将需要写一个

  • 我有一张叫‘宽床单’的桌子。这是一个班级学生所有学科总分的汇总之处。 通过此查询获得了每个主题的总数 并用此显示 而总体总数显示为 一切都很顺利,直到我不得不对表格进行排序,从总分最高到最低。表现在应该如下所示: 我真的被困住了。我从这里怎么走? 好吧,按照@titi的建议,我做了一个group_by查询,得出了这样的结果: 如果这是正确的,我如何显示它?

  • 输入:7282341 输出:8743221 接受一个数字 我需要从后面开始将这些数字合并到一起,但不确定具体要做什么。

  • 我开始学习Java流,我想知道是否有可能只偷看流的第一个元素而不检索它。 例如,我有多个流,每个流都有按非降序排序的整数,我想得到所有整数的排序列表,所以我考虑使用< code>PrioirtyQueue 但是,为了获取

  • 我知道这是一个基本问题,但我已经挣扎了很多天,找不到解决办法。请,任何建议将非常真诚地感谢。 我只是尝试将现有ArrayList中包含的元素(节点对象)添加到新的空ArrayList中。其思想是,如果我可以一次添加一个元素,那么我可以对1个元素的列表、2个元素的列表、3个元素的列表运行堆排序方法,以此类推。 但是,当使用for循环、while循环或甚至是增强的for循环时,我无法成功地添加元素并输

  • 我试图添加项到Python数组。 我奔跑 然后,我尝试添加一些东西到这个数组通过做: 似乎没有方法。如何向数组中添加项?