Solution en Java.
/*
* Example solution to finding all possible numbers divisible by two different numbers.
* In response to stack overflow question at the following URL:
* https://stackoverflow.com/questions/42368860/find-all-common-divisible-numbers-given-set-of-divisibles
* Author James Pata
* Date 01/05/18
*/
public class primeFactorization
{
public static void main(String[] args)
{
//CHOOSE ANY RANGE OF NUMBERS (>= 1 only)
int testRange = 216;
//CHOOSE ANY Two Numbers to Compare Divisibility Similarities
int number1 = 9;
int number2 = 24;
System.out.println("All numbers divisble by either " + number1 + " and " + number2 + " are: \n");
/*
*The for loop will iterate through the testRange of numbers to be analyzed starting at 1.
*The for loop has two local variables called tempVariabel that holds the remainder.
*These tempVariables will be used to determine if divisible, and will then print corresponding confirmation
* The final else statement was excluded intentionally to prevent the index variable, testNumber, from printing
*/
for(int testNumber = 1; testNumber <= testRange; testNumber++)
{
int tempVariable1 = testNumber%number1;
int tempVariable2 = testNumber%number2;
if(isNumberDivisibleBy(number1, testNumber) && isNumberDivisibleBy(number2, testNumber)) {
System.out.println(testNumber + " is divisible by both " + number1 + " and " + number2);
} else if(isNumberDivisibleBy(number1, testNumber)) {
System.out.println(testNumber + " is divisible by " + number1);
} else if(isNumberDivisibleBy(number2, testNumber)) {
System.out.println(testNumber + " is divisible by " + number2);
}
}
}//endmain
/*
*The isNumberDivisbileBy takes two parameters, and returns true if
*parameter testNumber is evenly divisible by number of choosing.
*(testNumber is determined later determined by the for loop in the main method.)
*/
public static boolean isNumberDivisibleBy(int number, int testNumber)
{
if (testNumber%number == 0) {
return true;
} else { return false; }
}
}//endclass
Résultat:
All numbers divisble by either 9 andS 24 are:
9 is divisible by 9
18 is divisible by 9
24 is divisible by 24
27 is divisible by 9
36 is divisible by 9
45 is divisible by 9
48 is divisible by 24
54 is divisible by 9
63 is divisible by 9
72 is divisible by both 9 and 24
81 is divisible by 9
90 is divisible by 9
96 is divisible by 24
99 is divisible by 9
108 is divisible by 9
117 is divisible by 9
120 is divisible by 24
126 is divisible by 9
135 is divisible by 9
144 is divisible by both 9 and 24
153 is divisible by 9
162 is divisible by 9
168 is divisible by 24
171 is divisible by 9
180 is divisible by 9
189 is divisible by 9
192 is divisible by 24
198 is divisible by 9
207 is divisible by 9
216 is divisible by both 9 and 24
Si vous souhaitez inclure les numéros qui tombent sous les deux numéros choisis pour comparer, il serait facile d'étendre ce code pour inclure cette fonctionnalité. Cependant, mathématiquement je soutiendrais que n'importe quel nombre plus petit que les deux nombres donnés, ne peut jamais être divisible PAR 9 ou 24. (parce que le résultat serait toujours une fraction non-impropre, et donc un décimal moins qu'un)
Cependant, si vous avez réarrangé la logique, pour indiquer "quels nombres divisent en 9 ou 24" que je pourrais être d'accord avec ce genre de logique. Et encore une fois, l'expansion de ce ne serait pas difficile. Bien que, je serais tenté de nettoyer mes fonctions pour faire une chose, et une seule chose. Qui en Java, inclurait probablement des pratiques de codage propres différentes de javascript.
Si cela n'a pas aidé à répondre à votre question, s'il vous plaît être plus descriptif avec ce que vous voulez exactement faire. Je peux réécrire le code, puis le traduire en javascript (Je suis décent en javascript, mais plus fort en Java)
[LCM] (https://en.wikipedia.org/wiki/Least_common_multiple) (un , b) = a * b/[GCD] (https://en.wikipedia.org/wiki/Greatest_common_divisor) (a, b) – Phylogenesis
@Phylogenèse hmmm Je ne cherche pas à trouver des multiples communs? par exemple 2 * 2 * 2 = 8 est une réponse valide. Je dis que si X peut être divisé par 9 et 24, il peut également être divisé par 8? mais au début, je ne sais pas si 8 est une réponse valable? – MonteCristo
Il est compliqué d'indiquer, mais fondamentalement factoriser tous les diviseurs que vous avez en forme de puissance maximale, par exemple. 9 = 3^2, 24 = 2^3 * 3^1. Maintenant, prenez le maximum sur tous les exposants des nombres premiers, donc pour 2 l'exposant max est 3, pour 3 l'exposant max est 2, pour 5 l'exposant max est 0, etc. Maintenant itérer sur toutes les valeurs possibles de l'exposant de 0 à max pour chaque prime. Chaque choix donne un diviseur distinct de X. L'exposant de tous les zéros vous donne le diviseur 1, que vous pouvez supprimer en fonction de la façon dont vous comptez. –