1. Resolva o número principal
1.1 Descrição
Primeiro de tudo, vamos entender o conceito, qual é o que são números primos? Número Prime: Se um número só puder ser divisível por 1 e ele mesmo, esse número é chamado de número primo, e o número correspondente é chamado de número de soma. Com base nesse conceito, podemos pensar rapidamente em um método, que deve começar de 1 e testar constantemente para ver se há números que podem ser divididos por eles de 1 a si mesmo.
Desse ponto de vista, é realmente muito simples encontrar números primos. Existe uma maneira mais conveniente para nós? Aqui está um método famoso de encontrar números primos por Eratóstenos.
1.2 Solução
Primeiro de tudo, você pode usar círculos para resolver esse problema. Divida um número especificado por todos os números menores que ele. Se você pode dividi -lo, não é um número privilegiado. No entanto, como reduzir o número de verificações de círculos? Como encontrar todos os números primos menores que N?
Supondo que o número a ser verificado seja n, de fato, basta verificar o número de raiz de N. O motivo é muito simples. Suponha que a*b = n, se A for maior que o número da raiz de N, na verdade, verifique antes de ser menor que A pode primeiro verificar se o número B pode ser divisível. No entanto, o uso do número de raiz no programa terá o problema de precisão, para que você possa usar i*i <= n para verificação e a execução será mais rápida.
Vamos supor que exista uma peneira para armazenar 1 ~ n, por exemplo:
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ......... N
Primeiro peneire os múltiplos de 2:
2 3 5 7 9 11 13 15 17 19 21 ......... N
Então peneire os múltiplos de 3:
2 3 5 7 11 13 17 19 ......... n
Em seguida, peneira os múltiplos de 5, depois peneire o número primo de 7 e, em seguida, peneira os múltiplos de 11 ..., dessa maneira, os números deixados no final são todos números primos, este é o método de triagem Eratóstenes (EratosnessityieveMEmethod).
O número de cheques pode ser reduzido. De fato, basta verificar 6n+1 e 6n+5, ou seja, pule os múltiplos de 2 e 3 diretamente, para que a ação se verifique no programa possa ser reduzida.
1.3 Código
importar java.util.*; public class Prime {public static int [] findPries (final int max) {int [] prime = new int [max+1]; ArrayList List = new ArrayList (); for (int i = 2; i <= max; i ++) prime [i] = 1; para (int i = 2; i*i <= max; i ++) {// isso pode ser melhorado se (prime [i] == 1) {for (int j = 2*i; j <= max; j ++) {if (j % i == 0) prime [j] = 0; }}} para (int i = 2; i <max; i ++) {if (prime [i] == 1) {list.add (new Integer (i)); }} int [] p = new int [list.size ()]; Objeto [] objs = list.toarray (); for (int i = 0; i <p.Length; i ++) {p [i] = ((inteiro) objs [i]). intvalue (); } retornar p; } public static void main (string [] args) {int [] prime = prime.findPries (1000); for (int i = 0; i <prime.length; i ++) {System.out.print (prime [i]+""); } System.out.println (); }}2. Fator
2.1 Descrição
Como mostrado acima, vamos primeiro entender o que é a fatoração? A conversão de um número no produto de vários outros números é chamada de fatoração. Depois de entender esse conceito, devemos entender que estamos resolvendo um fator de um número de soma em comparação com a solução acima para resolver o número primo.
A fatorização basicamente usa o valor menor que o número de entrada como divisor e o remove com o número de entrada. Se puder ser dividido, será considerado um fator. A solução mais rápida é encontrar todos os números primos menores que o número e tentar ver se pode ser dividido.
2.2 Código
importar java.util.arraylist; public class fator {public static int [] fator (int num) {int [] pnum = prime.findPrime (num); ArrayList List = new ArrayList (); for (int i = 0; pnum [i] * pnum [i] <= num;) {if (num % pnum [i] == 0) {list.add (novo inteiro (pnum [i])); num /= pnum [i]; } else i ++; } list.add (novo inteiro (num)); int [] f = new int [list.size ()]; Objeto [] objs = list.toarray (); for (int i = 0; i <f.length; i ++) {f [i] = ((inteiro) objs [i]). intvalue (); } retornar f; } public static void main (string [] args) {int [] f = fator.factor (100); for (int i = 0; i <f.Length; i ++) {System.out.print (f [i]+""); } System.out.println (); }}3. Resumo
Resolver números primos e fatorização é a habilidade básica dos programas e algoritmos de aprendizagem, e você deve dominá -los com proficiência. O código aqui possui apenas um pequeno número de comentários, o que pode ser um pouco difícil para iniciantes, mas este é o primeiro passo para entrar no palácio dos algoritmos do programa. Você pode copiar este código para sua máquina e preencher os comentários passo a passo para tornar o processo do programa mais claro.
O exposto acima é todo o conteúdo deste artigo sobre a implementação de programação Java para obter números primos e código de fatorização, e espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la!