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.
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.
(* 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.)
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