Решение на 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
Результат:
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
Если вы хотели бы включить номера, которые находятся ниже двух выбранных чисел для сравнения, было бы легко расширить этот код, чтобы включить эту функцию. Тем не менее, математически я бы сказал, что любое число, меньшее, чем два заданных числа, никогда не может быть делимым на 9 или 24. (потому что результат всегда будет некорректной и, следовательно, десятичным меньше одного)
Однако, если вы перестроили логику, укажите «какие числа делят INTO 9 или 24», чем я мог бы согласиться с такой логикой. И еще раз, расширение этого не составит труда. Хотя, у меня возникло бы желание очистить мои функции, чтобы сделать что-то одно, и только одно. Что в Java, скорее всего, будет включать в себя чистые методы кодирования, отличные от javascript.
Если это не помогло ответить на ваш вопрос, пожалуйста, опишите, что именно вы хотите сделать. Я могу переписать код, а затем перевести его в JavaScript (Я порядочный в JavaScript, но сильнее в Java)
[LCM] (https://en.wikipedia.org/wiki/Least_common_multiple) (в , b) = a * b/[GCD] (https://en.wikipedia.org/wiki/Greatest_common_divisor) (a, b) – Phylogenesis
@Phylogenesis hmmm Я не пытаюсь найти общие множители? например. 2 * 2 * 2 = 8 является действительным ответом. Я говорю, если X можно разделить на 9 и 24, его также можно разделить на 8? но в начале я не знаю, является ли 8 действительным ответом? – MonteCristo
Это сложное состояние, но в основном фактор всех делителей, которые у вас есть в форме простой мощности, например. 9 = 3^2, 24 = 2^3 * 3^1. Теперь возьмем max по всем показателям простых чисел, так что для 2 максимальный показатель равен 3, для 3 максимальный показатель равен 2, для 5 максимальный показатель равен 0 и т. Д. Теперь перебираем все возможные значения показателя из 0 до max для каждого штриха. Каждый такой выбор дает отдельный дивизор X. Показатель all-zeroes дает вам делитель 1, который вы можете подавить в зависимости от того, как вы рассчитываете. –