所以我称自己是一个相当新手的程序员,因为我主要关注我学校的硬件而不是很多计算机科学课程.
所以我解决了Euler项目的问题7:
通过列出前六个素数:2,3,5,7,11和13,我们可以看到第6个素数是13.
什么是第10001个素数?
我设法在没有问题的情况下在Java中解决了这个问题,但是当我运行我的解决方案时,它花费了8并且更改了秒数.我想知道如何从编程的角度优化这一点,而不是数学观点.
数组循环和while语句主要是耗费处理时间吗?这怎么可以优化?再一次不寻找一个奇特的数学方程式......在解决方案线程中有很多.
SPOILER我的解决方案如下.
public class PrimeNumberList {
private ArrayList<BigInteger> primesList = new ArrayList<BigInteger>();
public void fillList(int numberOfPrimes) {
primesList.add(new BigInteger("2"));
primesList.add(new BigInteger("3"));
while (primesList.size() < numberOfPrimes){
getNextPrime();
}
}
private void getNextPrime() {
BigInteger lastPrime = primesList.get(primesList.size()-1);
BigInteger currentTestNumber = lastPrime;
BigInteger modulusResult;
boolean prime = false;
while(!prime){
prime = true;
currentTestNumber = currentTestNumber.add(new BigInteger("2"));
for (BigInteger bi : primesList){
modulusResult = currentTestNumber.mod(bi);
if (modulusResult.equals(BigInteger.ZERO)){
prime = false;
break;
}
}
if(prime){
primesList.add(currentTestNumber);
}
} …Run Code Online (Sandbox Code Playgroud) 我一直试图找到一些关于是否可以使用IntelliJ运行ServiceMix进行运行/调试的文档?
有谁知道怎么做/指向某种指南?
谢谢.