J'ai créé un programme de jugement des nombres premiers en Java

introduction

Cet article est destiné aux débutants qui apprennent eux-mêmes Java et écrivent des programmes par essais et erreurs avec des idées originales (tout en étudiant un peu), et publient du code qui n'est pas du tout utile pour la satisfaction de soi. C'est quelque chose à faire.

En même temps que de regarder la croissance des débutants avec des yeux chaleureux, je pense qu'il y a naturellement des endroits où vous pouvez avoir l'opinion "Non, c'est étrange (# ゚ Д ゚)!?", Alors n'hésitez pas à commenter dans ce cas. S'il vous plaît.

À propos de la publication sur Qiita

Ceci est le deuxième article. En repensant à la phrase que j'ai postée l'autre jour, j'ai mal compris que la méthode de description dans Qiita était au format HTML, mais il existe une méthode de description Markdown, et cette fois j'aimerais l'écrire de cette manière. Merci beaucoup pour votre professeur m (_ _) m J'espère que ce sera plus facile à voir.

Programme de jugement des nombres premiers décrit dans l'entrevue

(* Quand je suis rentré chez moi et que j'ai essayé de compiler, j'ai eu une erreur, donc je publierai la correction.) (* J'utilise aussi la classe Random, mais j'ai appris cela récemment, alors j'ai essayé de l'utiliser pendant un moment.)

L'autre jour, on m'a demandé de créer un programme de jugement des nombres premiers en utilisant Java, et le code suivant a été écrit avec un visage doy.

System.out.println("Programme de jugement des nombres premiers aléatoires");
java.util.Random rm = new java.util.Random();
int s = rm.nextInt(100);

if (s == 2 || s == 3) {
    System.out.println(s + "Est un nombre premier");
} else if (s % 2 == 0 || s % 3 == 0) {
    System.out.println(s + "N'est pas un nombre premier");
} else {
    System.out.println(s + "Est un nombre premier");
}

(Mis à part le tsukkomi que le code est sale)

** Tout d'abord, vous ne connaissiez pas la "définition des nombres premiers". ** **

(J'aime ce genre de problème mathématique parce que je suis un littéraire, mais je me souviens des formules et ainsi de suite au-delà de l'univers)

Selon l'enseignant de Wikipédia

"Un nombre premier est un entier naturel qui n'a pas de fractions autres que les fractions positives évidentes (1 et lui-même) et n'est pas 1. 』\

Eh bien, le point est

** Je pense qu'un nombre naturel qui ne peut être divisé que par le nombre lui-même et 1 est un nombre premier, et s'il est divisible par un autre nombre, ce n'est pas un nombre premier. ** **

Par exemple, il semble qu'il jaillit à l'infini comme 2,3,5,7,11.

Si j'explique un peu le programme ci-dessus, je peux le compiler sans aucune erreur, mais même les nombres qui ne sont pas des nombres premiers sont considérés comme des nombres premiers.

Un tel programme est fait à partir de l'idée que si n est divisible par 2, c'est un nombre pair, et si n est divisible par 3, n est un nombre impair.

Cependant, par exemple, 121 est le carré de 11, donc ce n'est pas un nombre premier, mais il n'est pas divisible par 2 ou 3, donc il sera jugé comme un nombre premier.

(C'est un peu gênant au niveau de recommencer dès la première année de lycée.)

Programme de jugement des nombres premiers

System.out.println("Programme de jugement des nombres premiers");
int v = 123;
System.out.println("Le numéro entré est "" + v + ""est");

if (v < 2) {
    System.out.println("Un nombre inférieur à 2 a été entré");
} else if (v == 2) {
    System.out.println(v + "Est un nombre premier");
} else {
    boolean issosu = true;
    for (int u = 2; u < v; u++) {
        if (v % u == 0) {
            is = false;
        }
    }

    if (isSosu) {
        System.out.println(v + "Est un nombre premier");
    } else {
        System.out.println(v + "N'est pas un nombre premier");
    }
}

(Mis à part le tsukkomi que le code est sale)

J'ai bien peur que cela détermine correctement le nombre premier, mais cela a pris deux jours. J'ai parlé avec mon jeune frère du type de nombres premiers, et s'il est divisible par 2, c'est un nombre pair, et à partir des autres nombres, un nombre naturel qui n'est pas le carré d'un certain nombre est un nombre premier. Voici la réponse qui est sortie en s'appuyant sur la recherche sur le net

"** n qui n'est pas divisible par des nombres inférieurs au nombre naturel n est un nombre premier **"

De plus

"** n est un nombre premier si n est 2, erreur ** si n est inférieur à 2"

Après avoir limité n à des nombres supérieurs à 2 à l'avance, il est complété par la construction d'un programme qui détermine que «un nombre qui n'est pas divisible par n> v» ou «un nombre qui n'est pas divisible par n> = n-1» est un nombre premier. fait.

Cependant, si vous utilisez simplement l'instruction for,

5 n'est pas un nombre premier 5 n'est pas un nombre premier 5 est un nombre premier 5 n'est pas un nombre premier 5 n'est pas un nombre premier . . . J'ai commencé à juger si 5 (le nombre entré) était un nombre premier avec le nombre exprimé dans la phrase pour, et j'ai lutté dur.

Eh bien, je ne savais pas comment le résoudre, alors je l'ai un peu recherché sur Google, mais j'ai défini la variable isSosu avec le type booléen et défini la valeur initiale sur true. Ensuite, dans l'instruction for, u est bouclé entre les nombres 1 inférieurs à v, et si u% v == 0, u est divisible par un nombre naturel plus petit que son propre nombre. Remplacez par faux par isSosu. En faisant cela, s'il est divisible, il est faux, et dans d'autres cas, il peut être considéré à nouveau, et if (isSosu) {... et true case peut être System.out.println. fait. (Hmm, c'est difficile à comprendre.)

Il était regrettable que je ne puisse pas le faire complètement par moi-même parce que je ne pouvais pas faire attention à l'utilisation du type booléen et je l'ai googlé, mais si un débutant construit un programme de jugement des nombres premiers avec la connaissance d'un livre d'introduction, c'est Je me demande si ce sera comme ça, mais je pense qu'il y a probablement une manière meilleure et plus efficace de l'écrire. Je ne suis pas bon en mathématiques et je n'ai pas encore écrit beaucoup de programmes Java.

Donc, pour le moment, je pense que pouvoir écrire ce programme de jugement des nombres premiers est l'un des obstacles comme preuve quand on teste si le programme peut être assemblé. Je pense qu'un débutant résoudra certains problèmes lors de la création d'un programme, mais l'une des réponses est la suivante, j'espère que vous pourrez le lire comme si vous vouliez le voir. Je pense.

Recommended Posts

J'ai créé un programme de jugement des nombres premiers en Java
J'ai écrit un programme de jugement des nombres premiers en Java
[Débutant] J'ai créé un programme pour vendre des gâteaux en Java
J'ai créé un jeu Janken en Java (CLI)
J'ai écrit un programme de factorisation prime en Java
J'ai fait une roulette à Java.
J'ai fait un jeu de problèmes de calcul simple en Java
J'ai créé un PDF avec Java.
J'ai créé une application shopify @java
J'ai fait une annotation en Java.
Jugement des nombres premiers Java
J'ai créé un nouvel outil de déploiement Java
J'ai essayé de créer un programme en Java qui résout le problème du voyageur de commerce avec un algorithme génétique
J'ai créé un outil Diff pour les fichiers Java
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
J'ai créé une bibliothèque d'extension Ruby en C
J'ai essayé de créer une compétence Clova en Java
J'ai essayé de créer une fonction de connexion avec Java
J'ai créé un serveur et un client Restful au printemps.
Ce que j'ai appris lors de la création d'un serveur en Java
J'ai créé un Wrapper qui appelle KNP depuis Java
Appeler un programme écrit en Swift depuis Processing (Java)
J'ai créé une application de chat.
Programme de jugement des nombres premiers le plus rapide C # Java C ++
Rechercher un sous-ensemble en Java
Programme Null-safe en Java (Eclipse)
J'ai essayé la métaprogrammation avec Java
Je voulais juste créer une propriété réactive en Java
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
J'ai essayé de convertir une chaîne de caractères en un type LocalDate en Java
J'ai étudié Randoop, un générateur de classe de test JUnit pour Java.
J'ai créé un client RESAS-API en Java
J'ai créé un Dockerfile pour démarrer Glassfish 5 en utilisant Oracle Java
Création du framework JAVA "numatrix" qui génère facilement des valeurs numériques uniques dans un environnement distribué et multi-thread
Implémenter un test piloté par table dans Java 14
J'ai envoyé un e-mail en Java
3 Implémentez un interpréteur simple en Java
J'ai créé une interface graphique avec Swing
J'ai écrit le théorème de Gordobach en java
Un exemple simple de rappels en Java
J'ai fait une simple fonction de recommandation.
Créer un programme Servlet dans Eclipse
J'ai essayé d'utiliser JWT en Java
Jeu de devinettes d'âge réalisé avec Java
Restez coincé dans un Java Primer
J'ai créé une application correspondante (application Android)
Distributeur automatique d'échantillons fabriqué avec Java
J'ai créé un outil de génération package.xml.
[Android] J'ai créé une application de podomètre.
J'ai fait un "Sunshine Ikezaki game" que j'ai vu sur Twitter en Java.
Ai-je besoin d'un test si je fais DDD dans une langue avec un type?
Je ne peux pas créer une classe Java avec un nom spécifique dans IntelliJ
[Note] Ce que j'ai appris en six mois grâce à des inexpérimentés (Java)
[Note] Ce que j'ai appris en six mois grâce à des inexpérimentés (Java) (1)
J'ai réussi le test Java niveau 2, je vais donc laisser une note
J'ai récemment créé une application js dans le langage courant de Dart
J'ai écrit une sorte de livre qui ressemble à Java
Création d'une méthode pour demander Premium Friday (version Java 8)
J'ai écrit un programme de recherche d'itinéraire dans TDD et j'ai essayé de le refactoriser