Maison  >  Article  >  Java  >  Exemple d'implémentation Java d'un algorithme de facteur premier pour décomposer des nombres d'entrée arbitraires

Exemple d'implémentation Java d'un algorithme de facteur premier pour décomposer des nombres d'entrée arbitraires

黄舟
黄舟original
2017-10-18 10:22:071439parcourir

Cet article présente principalement l'implémentation Java de l'algorithme du facteur premier pour décomposer tout nombre d'entrée, impliquant des compétences opérationnelles liées aux opérations mathématiques Java. Les amis dans le besoin peuvent s'y référer

L'exemple de cet article décrit Java. implémentation de la décomposition de n'importe quel nombre d'entrée. L'algorithme du facteur premier. Partagez-le avec tout le monde pour votre référence, comme suit :

Décomposez les facteurs premiers de n'importe quel nombre saisi :

Concept de facteurs premiers : tout nombre composé Il peut s'écrire comme la multiplication de plusieurs nombres premiers. Chaque nombre premier est un facteur de ce nombre composé, appelé facteur premier décomposé de ce nombre composé. La factorisation des facteurs premiers ne s'applique qu'aux nombres composés.

Par exemple : 12 = 2x2x3 18 = 2 x 3 x 3, etc.

Expliquons l'idée de​​cet algorithme : Premièrement : on écrit d'abord une fonction pour trouver premier nombres ; deuxième ; Nous créons une fonction qui décompose les facteurs premiers, puis y introduisons une fonction de nombre premier pour déterminer s'il s'agit d'un nombre premier

Le code est donné ci-dessous (pour référence uniquement) :


package javastudy;
import java.util.*;
public class Testit3 {
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int number;
    number = in.nextint();
    factor(number); //函数调用
    in.close(); //关流
  }
  static void factor(int number) {
    if(isPrime(number)) //首先进行判断是否为素数,如果是就直接输出
    {
      System.out.print(number);
    }
    for (int i = 2; i <= number - 1; i++) {
      if (number % i == 0) {
        System.out.print(i + "\t");
        int num = number / i; //进行一次分解num就要变一次!
        if (isPrime(num)) { //判断是否为素数,是的话就直接输出这个数字
          System.out.print(num);
        } else { //不是素数就继续分解
          factor(number / i); //利用函数递归的思想
        }
        // return ;
        break; //分解完了就退出
      }
    }
  }
  //判断是否为素数的函数
  static Boolean isPrime(int number) {
    for (int i = 2; i <= Math.sqrt(number); i++) {
      if (number % i == 0) {
        return false;
      }
    }
    return true;
  }
}

Résultat de l'exécution :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn