اجرا نشدن حلقه
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)
چرا حلقه ادامه ندارد؟
اگه فرمول گرفتن اعدااد اول رو میخواید از این فرمولی که نوشتم استفاده کنید ! شما بی دلیل پیچیدش کردی:)
int m = 10000; //اخرین عددی که میخواید تا اونجا اعداد اول را پیدا کنه رو بنویسید
for (int k= 1; k<= m; k++) {
if (m % k == 0) {
Log.i("log", "Number Found: " + k);
}
}
موفق باشید
سلام ، خب معلومه دیگه ، وقتی به اولین عدد غیر اول ( 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);
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .