Как вичетать корень и записать красиво?

У меня возникла проблема. Нужна вичетать корень из числа 388 но результат в 19,69772 меня не устраивает мне нужно 2√97.
Я пробовал достать алгоритм з программы photomath но безрезультатно.
В теория должно получиться √4 • √97 = √2²•√97= 2•√97
НО КАК ЕТО СДЕЛАТЬ НА JAVA????
  • Вопрос задан
  • 186 просмотров
Решения вопроса 2
leahch
@leahch
3Д специалист. Долго, Дорого, Дерьмово.
Не совсеv понятно, чем не нравится результат?
В питоне: math.sqrt(388) = 19.697715603592208
В яве: Math.sqrt(388) = 19.697715603592208

Можно взять остаток от деления (%) на 2 или 4 (и далее), и тогда взять корень от результата деления.
int number = 388;
		int tail = number;
		int mul = 1;
		if(number % 2 == 0) {
			mul = 2; tail = number/mul;
		}
		if(number % 3 == 0) {
			mul = 3; tail = number/mul;
		}
		if(number % 4 == 0) {
			mul = 4; tail = number/mul;
		}
		if(number % 5 == 0) {
			mul = 5; tail = number/mul;
		}
		if(number % 6 == 0) {
			mul = 6; tail = number/mul;
		}
		if(number % 7 == 0) {
			mul = 7; tail = number/mul;
		}
		if(number % 8 == 0) {
			mul = 8; tail = number/mul;
		}
		if(number % 9 == 0) {
			mul = 9; tail = number/mul;
		}
		
		System.out.printf("%d = %d√%d = %d * %.20f\n", number, mul, tail, mul, Math.sqrt(tail));

Результат
388 = 4√97 = 4 * 9,84885780179610400000

ХА! Немного оптимизировал!
int number = 388;
		int tail = number;
		int mul = 1;
		for(int i=2; i<number/2; i++) {
			if(number % i == 0) {
				mul = i; tail = number/mul;
			}
		}
		
		System.out.println(Math.sqrt(tail));
		System.out.printf("%d = %d√%d = %d * %.20f\n", number, mul, tail, mul, Math.sqrt(tail));

Результат!
388 = 97√4 = 97 * 2,00000000000000000000
Ответ написан
Комментировать
SagePtr
@SagePtr
Еда - это святое
Разбить число на простые множители и те, которых есть по 2 экземпляра, попарно выносим за корень. Например, 2*2*2*2*2*3 - каждые 2 двойки выносим, за корнем получается 2*2, под корнем остаётся 2*3, конечный результат 4*√2*√3
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы