بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

الگوریتم مقسوم علیه های اول یک عدد

مدیریت گفتگو
GOOD 10 سال پیش
آخرین تغییر: 10 سال پیش

 int numberj = 10;
        for (int i = 3; i < numberj; i++) {
            if (numberj % i == 0) {

                Log.w("LOG", "magh som haye adad = " + "khodeadad va 2 va : " + i);
                if (i % 2 == 0) {
                    Log.w("LOG", "avalnist" + i);

                }

            }

        }

این الگوریتم درست کار میکنه اگر میکنه نظرتون چیه واگر نمیکنه مشکلش چیه ممنون

نظرات

Hamid 10 سال پیش
اصلا سوالتون اشتباه است چون اعداد اول بجز خودش و یک بر عدد دیگه ای بخش پذیر نیست که شما بخواهید الگوریتم مقسوم علیه های اول یک عدد رو بسازید و سوالتون کالا اشتباهه!!!!!!!!!!!!!!!!!!!!!!!!!!!
Reza 10 سال پیش
>> Hamid گفتن مقسوم علیه های اول یک عدد ، نه مقسوم علیه های یک عدد اول ، اگه دومی رو میگفتن حق با شما بود و عدد اول مقسوم علیه نداره ، ولی یک عدد میتونه مقسوم علیه اول داشته باشه مثلا عدد 20 ، 6 مقسوم علیه داره که از بین اونا 2 و 5 اوله .
Hamid 10 سال پیش
حق با شماست اشتباه از من بود سوال رو درست متوجه نشدم!

پاسخ‌ها 4

charlie 10 سال پیش

سلام،‌اول ببينيد منطق الگوريتمتون رو درست فهميدم يا نه؟ ، شما تو اين الگوريتم اين قضيه رو مطرح كرديم كه مقسوم عليه هاي اعداد اول بر دو بخش پذير نيستند بجز عدد دو در مورد بقيه ي اعداد صدق ميكنه و اگه عددي مقسوم عليه اش بر دو بخش پذير بود عدد اول نيست ، واسه همينم تو ي حلقه ي for كوچكتر رو فقط گذاشتين در حاليكه در تعريف اعداد اول داريم كه عدد اول عدديست كه بر يك و خودش برعدد ديگه اي بخش پذير نيست، ولي چالش كار اينجاست كه مشخص كردن متغييري براي مشخص كردن اينكه عدد اول هست يا نه يه مقداري سخته من كد شما رو يه ذره تغيير دادم اما براي دو جوابگو نيست پس الگوريتمم كامل و درست نيست ، ولي بازم روش كار ميكنم ببينم به كجا ميرسم.

         int number = 17;
int counter = 0;
for (int i = 1; i <= number; i++) {
if (number % i == 0) {
if (i % 2 == 0) {
Log.i("LOG", "avalnist " + i);
}
counter++;
}

}
if (counter == 1) {
Log.i("LOG", number + " is Aval");
}

نظرات

Reza 10 سال پیش
سلام ، نا امیدتون نکنم ولی هر دو الگوریتم کلا اشتباه است ( البته اگه دنبال مقسوم علیه های اول یک عدد هستید ) ، راجع به الگوریتم اعداد اول بیشتر فکر کنید . یکی از بچه ها بهترین و کوتاهترین الگوریتم رو در این لینک نوشته ( انتهای صفحه ) .
charlie 10 سال پیش
من كلا قضيه رو اشتباه گرفتم، فكر كردم دنباله اينيم كه تعيين كنيم عدد اول هست يا نه؟ نه مقسوم عليهاش.
GR 10 سال پیش

دوستای گلم ازین استفاده کنین حله

  int number = 15;
for (int i = 1; i <= number; i++) {

if (number % i == 0) {
int value = 0;
for (int index = 1; index <= i; index++) {
if (i % index == 0)
value++;
}
if (value == 2)
{
Log.i("LOG", "" + i);
}
}
}

نظرات

New Student 10 سال پیش
داخل if متغیر تعریف کردین این اشکالی نداره؟
charlie 10 سال پیش
اگه متغيري كه داخل block تعريف كرده باشيم ، تو اين مثال داخل if‌، اگه خارج از block ازش استفاده نكنيم، نه، مشكلي نداره.
محسن 10 سال پیش

اینم متود الگوریتم من. چون برای اعداد بسیار بزرگ یکم طول میکشه بنابراین خط بعدش یه متن گذاشتم تا مطمئن شم محاسبه تمام شده!هر عددی میخواین امتحان کنین

 public void num(int n) {
        for (int i = 1; i <= n; i++) {

            int x = n % i;
            if (x == 0) {
                if (i % 2 != 0) {
                    if (i % 3 != 0) {
                        if (i % 4 != 0) {
                            if (i % 5 != 0) {
                                if (i % 6 != 0) {
                                    if (i % 7 != 0) {
                                        if (i % 8 != 0) {
                                            if (i % 9 != 0) {

                                                Log.i("LOG", "" + i);

                                                if (i == 2) {
                                                    if (i == 3) {
                                                        if (i == 5) {
                                                            if (i == 7) {
                                                                Log.i("LOG", "" + i);

                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        Log.i("LOG", "پایان محاسبه");
   


نظرات

mhpakdel 10 سال پیش

 این کد کوتاه تره و کار میکنه

        int mynumber = 1000;
        int count = 0;
        for (int i = 1; i <= mynumber; i++) {
            if (mynumber % i == 0) {
                for (int j = 1; j <= i; j++) {
                    if (i % j == 0) {
                        count++;
                    }
                }
                if (count <= 2) {
                    Log.i("LOG", "Number is: " + i);
                }
                count = 0;
            }
        }

 

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .