我试图在实例变量primes中创建以2开头的前n个素数组。我有两个问题。一个是在countPrimes方法中弄清楚我的基本情况应该发生什么。另一个问题是弄清楚如何在我的makeprimes方法中没有任何循环的情况下将元素或素数添加到我的数组中。如果您有任何建议会很好。例如,如果n为10,则会产生:
[2,3,5,7,11,13,17,19,23,29]
我的代码如下:
private int[] primes = {};
public int[] getPrimes() {
return primes;
}
public void countPrimes(int count, int n, int found) {
if(n == found){
//do nothing?
}else if (isPrime(count) == true) {
countPrimes(count + 1, n,found +1);
} else {
countPrimes(count + 1,n,found);
}
}
public void makePrimes(int n) {
primes = new int[n];
if(n>0){
countPrimes(0,n,0);
}
}
答案 0 :(得分:0)
我会做这样的事情
public int[] makePrimes(int n){
int[] primes = new int[n];
return makePrimesHLP(n, primes, 2);
}
public int[] makePrimesHLP(int n, int[] primes, int pos, int numprimes){
if(numprimes == n)
return primes;
if(isPrime(pos)){
primes[numprimes] = pos;
return makePrimesHLP(n, primes, ++pos, ++numprimes);
}
return makePrimesHLP(n, primes, ++pos, numprimes);
}
这是一个非常基本的功能(它通过并检查每个数字是否为素数),但它应该工作(我的代码中的基本错误可以承受)。您需要确保每次都返回一些内容,否则您无法取得进展。