Я пытался найти для заданного положительного целого числа Z, проверить, можно ли записать Z как PQ, где P и Q — положительные целые числа больше 1. Если Z можно записать как PQ, вернуть 1
, иначе возврат 0
Я много пробовал с онлайн-решением,
Проверьте, является ли одно целое число целой степенью другого
Нахождение, является ли число степенью 2
но это не то, что мне нужно, ни подсказка, ни подсказки?
Вот наивный метод — попробуйте каждую комбинацию:
function check($z) {
for($p = 2; $p < sqrt($z); $p++) {
if($z % $p > 0) {
continue;
}
$q = $p;
for($i = 1; $q < $z; $i++) {
$q *= $p;
}
if($q == $z) {
//print "$z = $p^$i";
return 1;
}
}
return 0;
}
Точно так же, используя встроенный PHP log
функция. Но это может быть не так точно (при наличии ошибок округления возможны ложные срабатывания).
function check($z) {
for($p = 2; $p < sqrt($z); $p++) {
$q = log($z,$p);
if($q == round($q)) {
return 1;
}
}
return 0;
}
Других решений пока нет …