Pular para o conteúdo

Crivo de Eratóstenes Simples em Java

Versão do crivo em Java.

Procurou-se usar algo que permitisse uma capacidade melhor e maior de armazenamento dos números encontrados usando recursos próprios e particulares desta linguagem.

A classe sieve001 foi criada com inicial lowercase para manter o padrão com o nome dos outros arquivos já publicados.

Pode-se substitui o 23.0 do Math.pow(2.0, 23.0) - 1 por um número maior a fim de se tabular um conjunto maior.

Para Math.pow(2.0, 31.0) - 1 a demora é absurda.

As variáveis foram nomeadas de forma abusiva, particularmente uma notação "austroHungara" sem os agravantes.
Perfil removido removido
Hits: 8.377 Categoria: Java Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Versão do crivo em Java.

Procurou-se usar algo que permitisse uma capacidade melhor e maior de armazenamento dos números encontrados usando recursos próprios e particulares desta linguagem.

A classe sieve001 foi criada com inicial lowercase para manter o padrão com o nome dos outros arquivos já publicados.

Pode-se substitui o 23.0 do Math.pow(2.0, 23.0) - 1 por um número maior a fim de se tabular um conjunto maior.

Para Math.pow(2.0, 31.0) - 1 a demora é absurda.

As variáveis foram nomeadas de forma abusiva, particularmente uma notação "austroHungara" sem os agravantes.
Download sieve001.java Enviar nova versão

Esconder código-fonte

import java.lang.String;
import java.lang.Long;
import java.util.ArrayList;

public class sieve001 {

   static final long longLimit = (long) Math.pow(2.0, 23.0) - 1;

   public static void main(String args[]) {

      ArrayList<Long> longPrimes = new ArrayList<Long>();

      long longNumber=5;
      int intNext=0, intIndex=0;
      double doubleSquareRoot=0.0;

      longPrimes.add(new Long(2));
      longPrimes.add(new Long(3));

      do {

         intNext = 0;
         doubleSquareRoot = Math.sqrt(longNumber);

         while ((double) longPrimes.get(++intNext)<doubleSquareRoot && (longNumber%longPrimes.get(intNext))!=0);

         if ((double) longPrimes.get(intNext)>doubleSquareRoot) longPrimes.add(new Long(longNumber));

         longNumber+=((longNumber%3==2)?2:4);

      } while (longNumber<longLimit);

      for (intIndex=0; intIndex<longPrimes.size(); intIndex++) System.out.print (String.valueOf(longPrimes.get(intIndex)) + " ");

      System.out.println ();

   }

}

Cálculo de número de anos baseado em data

Pequeno algoritmo para determinar se um número é primo ou não entre 1 e 10000

Pesquisa Ternária em um vetor ordenado

Conversor de bases

Treinamento de rede neural

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.