Я пытаюсь решить алгоритм где мы вводим любое число меньше 101 и больше 1 и отображаем их как сумму двух простых чисел. Например: я могу выразить 34 как:
Я написал алгоритм, и он отлично работает для каждого числа меньше 101 и больше 1. Но приложение, в котором я пытаюсь представить код, называется Dcoder запускает код и возвращает все четыре тестовых случая как Ложь. Что-то не так с моим кодом или проблема в приложении?
Это скриншот обязательных условий:
Это результат после отправки кода:
Это сколько я забил после представления. Все тестовые примеры возвращают отрицательный результат в ответ на мой код: ‘(
И наконец код, который я написал:
<?php
$n = 45;
if($n == 1 || $n == 0) {
echo "No";
die;
}
if($n<=100 && $n>=0){
function IsPrime($digit)
{
for($x=2; $x<$digit; $x++)
{
if($digit %$x ==0)
{
return false;
}
}
return true;
}
$numArray = array();
$num2array = array();
$num3Array = array();
for ($i=2; $i<= $n; $i++)
for ($j=2; $j <= $n; $j++)
{
if($i%$j==0)
{
break;
}
}
if($i==$j) //
{
$numArray[] = $i;
}
}
foreach ($numArray as $key => $firstNo) {
$num2 = $n - $firstNo;
$sum = $num2 + $firstNo;
$num2array[] = $num2;
foreach ($num2array as $key => $value) {
if(IsPrime($value) == true){
$num3Array[] = $value;
}
}
if(@IsPrime($value) == false) {
echo "No";
die;
}
foreach ($num3Array as $key => $firstNo) {
$num2 = $n - $firstNo;
$sum = $num2 + $firstNo;
//echo $num2."<p>";
$num5array[] = $num2;
//echo $num2."<br>";
if($sum == $n && $firstNo >= $num2) {
echo "<p>"."$num2 "." $firstNo" . "<p>";
}
}
}
else {
echo "No";
}
?>
Любая помощь будет оценена. Спасибо, что нашли время взглянуть на этот вопрос. 🙂
РЕДАКТИРОВАТЬ: это был механизм рендеринга кода в среде IDE, которая была причиной проблемы. Я понял это после краткого обсуждения по электронной почте через форму обратной связи. 🙂
Задача ещё не решена.
Других решений пока нет …