init:
deps-jar:
Compiling 1 source file to C:\Users\Administrador\Documents\NetBeansProjects\GujForunsTest\build\classes
compile-single:
run-single:
142913828922
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)
posta o teu código… aki o meu demorou mais o.O, com o Crivo
[code] public static final int[] primos = new int[1000000];
public static int next = 0;
public static boolean isPrimoOptimizade(int numero) {
if (numero < 2)
return false;
int count = 0;
while(primos[count] != 0 && //ou seja não há mais primos a testar
primos[count]*2 <= numero) { //com certeza não é divisivel pelos proximos primos...
if (numero%primos[count] == 0)
return false;
count++;
}
primos[next++] = numero;
//System.out.println("primos["+next+"] = " + numero);
return true;
}
public static void main(String ... args) {
long soma = 0;
for (int i = 0; i <= 2000000; i++)
if (isPrimoOptimizade(i)) {
soma += i;
//System.out.println(i + ": " + soma);
}
System.out.println(soma);
}[/code]
run:
142913828922
CONSTRUÍDO COM SUCESSO (tempo total: 1 minuto 40 segundos)
[code]public class p10 {
public BitSet bs;
public static void main(String[]args){
p10 s= new p10();
int num=2000000;//num é o valor final
long sum=0;
s.findprimes(num+1);
for(int i=2;i<=num-2;i++) if(s.isprime(i)==true)sum+=i;
System.out.println(sum);
}
//pelo método de erastoteles:
public void findprimes(int n){
bs = new BitSet(n+1);
int pz=(int)Math.sqrt(n);
bs.set(0,n,true);
int x=2;//primo inícial
while (x<=pz){
for(int i=x+x;i<=n;i+=x)bs.clear(i);
x=bs.nextSetBit(x+1);
}
}
public boolean isprime(int n){
return bs.get(n);
}
}[/code]
agora vi o erro!!
troque essa linha
while(primos[count] != 0 && //ou seja não há mais primos a testar
primos[count] <= (int)Math.sqrt(numero)) { //com certeza não é divisivel pelos proximos primos...
agora foi em 1s
ai sabe como eu posso herdar todas as declarações de um método para um outro método que estão na mesma classe?
e sim, DavidUser, da pra ser mais eficiente ainda… so precisa testar os números impares… os pares já são primos…
então no lugar de incrementar o teste de 1 em 1… so iniciar do 3, e testar de 2 em 2