Trouver si deux nombres sont premiers entre
Je suis en train d'écrire une méthode qui calcule si deux nombres sont premiers entre une affectation. Je suis principalement à la recherche de réponses sur où commencer. Je sais qu'il existe une méthode gcd()
qui va faire beaucoup pour moi, mais le travail est assez bien me faire faire sans pgcd ou de tableaux.
Je l'ai commencé, parce que je sais que je vais avoir à utiliser le %
opérateur dans une boucle for.
public static boolean relativeNumber(int input4, int input5){
for(int i = 1; i <= input4; i++)
Évidemment, cette méthode est seulement de retour true
ou false
parce que le main
fonction est uniquement destiné à imprimer une ligne spécifique en fonction de si les deux nombres sont premiers entre eux ou pas.
Je pense que je vais probablement avoir à écrire deux for
boucles, à la fois pour input4
et input5
, et, éventuellement, une sorte de if
déclaration avec une logique &&
opérande, mais je ne suis pas sûr.
OriginalL'auteur Tony | 2015-02-18
Vous devez vous connecter pour publier un commentaire.
Bien dans le cas où ils sont relativement premier, le plus grand commun diviseur est un, parce que - si - les deux chiffres pourrait être divisée par le nombre. Donc nous avons seulement besoin d'un algorithme pour calculer le plus grand commun diviseur, par exemple Euclide méthode:
Et puis:
D'euclide l'algorithme travaille dans O(log n) qui donc est plus rapide que l'énumération sur tous les diviseurs potentiels qui peuvent être optimisés pour O(sqrt n).
eh bien, vous pouvez simplement mettre en œuvre (ajouter le premier codefragment) de vous-même.
gcd
est - ce que je sais - la mise en œuvre de la Java standard de la bibliothèque.OriginalL'auteur Willem Van Onsem
Swift 4 code pour @williem-van onsem réponse;
Utilisation;
OriginalL'auteur Celil Bozkurt
Je pense que c'est la solution la plus simple. Poser des questions dans les commentaires.
Si cela est vrai, en fait j'ai appris beaucoup de choses. Je ne pense pas que le fait que le lancement d'un max permettrait de réduire la quantité de travail que le programme aurait à faire. Aussi, il a utilisé une logique && opérateur d'une manière que je n'aurais pas pensé. Je n'ai pas penser à utiliser le comte et de faire un état de l'count = 0 serait évidemment de déterminer ce que le premier. C'était plus une question de logique. Je peux comprendre le codage de l'amende juste. Je vous remercie Beezy pour votre présentation et kittycat3141 pour traiter de souci de mon expérience d'apprentissage.
hmm, avait-il me demander de lui enseigner? Il en est AINSI, lorsque vous posez votre difficulté des questions et obtenir les réponses pour eux.
en fait, vous pouvez déjà vous arrêter au sqrt(min(a,b)), qui permettra d'augmenter les performances de cet algorithme extrêmement (10 secondes si l'original exécuter pris 100 secondes). En outre, à partir du moment où vous trouvez un tel élément, vous pouvez
break
. Et enfin on utilisera deMath.max
parce que cela permet à des non-ramification code.Les commentaires que vous avez ajoutés sont beaux. À mon humble avis un
here iz teh codez
réponse est aussi mauvais que d'unesend me teh codez
question (qui à cette question n'est pas).OriginalL'auteur BSeitkazin