-1

如何将我的代码中的素数保存到一个数组中并随机调用它们中的 2 个

这是@Stephen C 建议的我编辑的代码#3

public class prima {

public  static int[] getPrima(int aw, int ak) {
        int [] primes;
        int jmlPrim=0;

        int h = 0;
        primes = new int[5];

        boolean isPrima;
        for (int i = 2; i <= ak; i++) {
            isPrima = true;
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    isPrima = false;
                    break;
                }
            }
            if (isPrima == true) {
                //System.out.print(i + " ");
                jmlPrim++;
                primes[jmlPrim]=i;

            }

        }
            /*here the code for random prime number*/
            final Random random = new Random();
        final int i1 = random.nextInt(primes[jmlPrim]);
        final int prime1 = primes[i1];
        System.out.println( "i1= " + i1);

        return null;

    }
public static void main(String[] args) {


     System.out.println(prima.getPrima(1, 10));

}

}

我想将 prima.getPrima(1,100) 的结果保存在一个数组中,

在我理解@Stephen C 的意思之前,我像上面一样编辑我的代码,

@Stephen C,请更正...,如何检查或确保我的质数存储在

primes[jmlPrim];

另外,我添加代码以从 primes[jmlPrim] 中获取随机值;

final Random random = new Random();
            final int i1 = random.nextInt(primes[jmlPrim]);
            final int prime1 = primes[i1];
            System.out.println( "i1= " + i1);

这是我运行该代码时得到的

array= 2,array= 3,array= 5,array= 7,i1= 4
null

为什么 i1=4?据我所知 4 不是素数

4

2 回答 2

1

鉴于问题的性质,这可能是“学习练习”......所以我不打算提供代码。

这是“将素数保存在数组中”部分的“第一次切割”:

  1. 将方法的返回类型更改为int[].
  2. 分配一个适当大小的数组来保存素数。
  3. 添加一个变量,该变量是数组中的下一个位置以添加素数。
  4. 当你找到一个素数时,像这样添加它:

     primes[index] = prime;
     index++;
    
  5. 返回数组

这是所有基本的“Java 101”内容。如果您难以理解如何操作,请查看您的讲义、教科书或 Oracle Java 教程。

(请注意,这不涉及您不知道awal和之间有多少质数的问题akhir。)


你问题的第二部分...... “我不知道如何调用它们中的 2 个随机数” ......难以理解。我不会猜你可能是什么意思。

于 2013-08-01T04:27:33.433 回答
0

如何调用它们中的 2 个随机数...(给定一个数组“素数”)

final int n = primes.length;
final Random random = new Random();
final int i1 = random.nextInt(n);
int i2 = i1;
while (i2 == i1) {
    i2 = random.nextInt(n);
}
final int prime1 = primes[i1];
final int prime2 = primes[i2];
于 2013-08-01T06:24:44.983 回答