2015-10-26 2 views
0

Я пытался найти для заданного положительного целого числа Z, проверьте, если Z может быть записана в виде P Q, где P и Q являются положительными целыми числами больше 1.   Если Z можно записать в виде P Q, возвращение 1 , иначе вернуть 0Дает ли количество число любого другого натурального числа php?

Я пробовал много с онлайн-решения,

Check if one integer is an integer power of another

Finding if a number is a power of 2

, но это не то, что мне нужно, любой намек или любые советы?

+0

Вы хотите, чтобы петля от 1 до бесконечности, чтобы проверить? –

+0

Состояние, 1 <= Z > = 10^9 –

ответ

1

Вот наивный способ - попробовать каждую комбинацию:

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; 
} 
+0

Спасибо Fuzzy, проверит и примет. –