3 سوال اعداد اول

scooter2005

Member
دوستان کسی می تونه این 3 تا برنامه رو php بنویسه و قابل اجرا باشه
اعداد اول یک تا صد
اعداد رو بگیره زوج و فرد رو مشخص کنه
یک عدد بگیرد و برعکس رو چاپ کنه
مثل 123 که بشه 321
 

P.H.P

Member
دوستان کسی می تونه این 3 تا برنامه رو php بنویسه و قابل اجرا باشه
اعداد اول یک تا صد
اعداد رو بگیره زوج و فرد رو مشخص کنه
یک عدد بگیرد و برعکس رو چاپ کنه
مثل 123 که بشه 321

1) اعداد اول یک تا صد

PHP:
for ($i = 1; $i <= 100; $i++)
{
    if(($i == 1) OR ($i == 2) OR ($i == 3) OR ($i == 5) OR ($i == 7))
        print $i . "<br>";

    elseif(($i % 2 != 0) AND ($i % 3 != 0) AND ($i % 5 != 0) AND ($i % 7 != 0))
        print $i . "<br>";
}

2) اعداد رو بگیره زوج و فرد رو مشخص کنه

PHP:
for ($i = 1; $i <= 100; $i++)
{
    if(($i%2))
        print $i . " Odd<br>";

    else
        print $i . " Even<br>";
}

3) یک عدد بگیرد و برعکس رو چاپ کنه

PHP:
echo strrev(123)

البته روش های دیگه ای هم برای بدست آوردن جواب این سوال ها هم هست

موفق
 

parsiteam

Member
سلام . اعداد اول یک تا صد رو فکر کنم کدش مشکل داره . من تست نکردمش ولی منطق میگه اشتباه باشه . آخه فقط برای یکسری اعداد اول خاص چک کردید . 2 و 3 و 5 و 7 . ولی 11 و 23 و ... چک نشدن . درضمن اصولش هم فکر نکنم این باشه . مثلا اگر یک تا 10000 رو بخوایم که این روش جواب نمیده .

با تشکر
 

P.H.P

Member
بله بیش از 100 بشه جواب نمیده باید تغییراتی تو شرط انجام بشه

اگه شما راه بهتری دارید لطفا بفرمایید
 

parsiteam

Member
بله بیش از 100 بشه جواب نمیده باید تغییراتی تو شرط انجام بشه

اگه شما راه بهتری دارید لطفا بفرمایید
راستشو بخواین توی درس طراحی الگوریتم ها می اومدیم برای اینکه بفهمیم یک عدد اوله یا نه تا نصب اون عدد تقسیم میکردیم . باقی مانده نباید صفر بشه . مثلا برای اینکه بفهمیم 567 عدد اوله یا نه می اومدیم تا 284 تقسیم میکردیم یعنی 567 تقسیم بر 1 و 2 و 3 و 4 و 5 و .... و 284 . نباید باقی مانده صفر بشه . هر جا باقی مانده صفر بشه یعنی تقسیم به درستی انجام شده و عدد بخش پذیر بوده . پس عدد اول نبوده . البته نوشتن تابع این نوع چک کردن معمولا با توابع بازگشتی نوشته می شوند .

موفق باشید .
 

P.H.P

Member
میتونید برای اعداد اول به صورت زیر استفاده کنید

PHP:
function checkNum($check) 
{
    if ($check < 2)
        return false;
    for ($i=2; $i<=($check / 2); $i++)
        if($check % $i == 0)
            return false;

    return true;
}

for($i = 1; $i <= 100; $i++)
    if(checkNum($i))
        echo $i.'<br />';
 

P.H.P

Member
اگه نخوایم از تابع استفاده کنیم به با 3 تا حلقه هم میشه این کارو کرد

نمایش اعداد اول
PHP:
for($i = 1; $i < 100; $i++)
{
    $flag = 0;
    for($j = 2; $j <= $i; $j++)
    {
        for($l = 2; $l < $j; $l++)
        {
            $result = $j / $l;
            if($result != 1 && intval($result) == $result)
            {
                $flag = 1;
                $l = $j;
            }
        }
        if($flag != 1)
            $check = $j;
        $flag = 0;
    }

    if($check == $i)
            echo $i . "<br />";
}
 

parsiteam

Member
ببخشید دوستان من حرفمو اصلاح میکنم , رفتم دنبالش فهمیدم تا نصف عدد لازم نیست چک کنیم تقسیم رو . تا جذر عدد کافیه . مثلا برای اینکه بفهمیم 77 عدد اول است یا کافیه تا 8 چک کنیم . اینطوری خیلی سریع تر میشه .

یا علی
 

P.H.P

Member
strrev از پیش تعریف شده هست (PHP 4, PHP 5)

ولی اگه این تابع رو نداری با این کد مشکلت حل میشه

PHP:
if(!function_exists("strrev"))
{
    function strrev($str)
    {
        $parts = array();

        while($str)
        {
            if(preg_match('/^(\&#[0-9]+;)(.*)$/',$str,$m))
            {
                $parts[] = $m[1];
                $str = $m[2];
            }
            else
            {
                $parts[] = substr($str, 0, 1);
                $str = substr($str, 1);
            }
        }

        return implode(array_reverse($parts), "");
    }
}
echo strrev("321");
 

جدیدترین ارسال ها

بالا