آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

اجرا نشدن حلقه

121299  10 سال پیش  10 سال پیش
0 0

       boolean testkon = true;
        for (k = 23; k < 100; k++) {
            for (int m = 2; m < k; m++) {
                if (k % m == 0) {
                    testkon = false;
                    break;
                }

            }
            if (testkon) {
                Log.i("log", "k= " + k);
            }
        }

انتظار داشتم کد بالا ،  اعداد اول را به من بده اما فقط اولین k  را در صورت اول بودن میدهد (اینجا 23)

چرا حلقه ادامه ندارد؟

 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Mohammad Vp  10 سال پیش
0 0

اگه فرمول گرفتن اعدااد اول رو میخواید از این فرمولی که نوشتم استفاده کنید ! شما بی دلیل پیچیدش کردی:)

        int m = 10000; //اخرین عددی که میخواید تا اونجا اعداد اول را پیدا کنه رو بنویسید
        for (int k= 1; k<= m; k++) {
            if (m % k == 0) {
                Log.i("log", "Number Found: " + k);
            }
        }

موفق باشید

پاسخ به سوال 
Reza  10 سال پیش
+1 0

سلام ، خب معلومه دیگه ، وقتی به اولین عدد غیر اول ( 24 ) برسه ، testKon برای همیشه false میشه و دیگه true نمیشه ، در صورتی که باید برای هر عدد که قراره بررسی بشه ( 23 تا 100 ) دوباره true بشه . پس متغییر testKon رو داخل حلقه اول مقدار بده :

 boolean testkon;
for (int k = 23; k < 100; k++) {
testkon = true;
for (int m = 2; m < k; m++) {
if (k % m == 0) {
testkon = false;
break;
}
}
if (testkon) {
Log.i("log", "k= " + k);
}
}
0 0
اصلا وجود بولین لازم نیست دوست من فرمول من باید جواب بده (10 سال پیش)
+2 0
فرمول شما اعداد غیر اول رو نشون میده ! (10 سال پیش)
0 0
فرمولشون مشکل داشت دقت نکردم ولی الان تصحیح شد (10 سال پیش)

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