بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مقسوم علیه عدد اول
سلام . این تیکه کد تمرینی هستش که مهندس نوشتند . متغیر boolean در if تعریف شده که اگر بیرون for باشد و در ابتدا برنامه اشتباه کار میکنه مثلا اگر عدد 20 باشد و boolean بیرون درست کار نمیکنه ولی داخل if درسته . علت اینکه در داخل if هست چیست ؟
for(int i =2; i <= number; i++){
// آیا متغیر نامبر به آی بخش پذیر است
if(number % i ==0){
// بله پس آی یک مقسوم علیه نامبر است
// فرض کنیم آی اول است
boolean isPrimitive =true;
// ببینیم آیا مثال نقضی پیدا می شود
for(int j =2; j < i; j++){
if(i % j ==0){
// عددی کوچکتر از آی پیدا شد که آی به آن بخش پذیر باشد پس آی اول نیست
isPrimitive =false;
// دیگر ادامه دادن فایده ندارد
break;
}
}
// آیا به این نتیجه رسیدیم که آی اول است
if(isPrimitive){
// بله، بود پس چاپش می کنیم
Log.i("LOG",""+ i);
}
}
}
+1
0
میتونی متغیر رو بیرون for تعریف کنی ولی باید حواست باشه هر دفعه هونجایی که الان تعریف شده مقدارش رو true کنی. دلیل اینکه اگه بیاری بیرون کار نمیکنه اینه که وقتی یکبار false شد یعنی یه عدد غیر اول پیدا کرد دیگه هیچوقت true نمیشه چون بیرون for هست. ولی میتونی boolean رو بیرون تعریف کنی و داخل for اول فقط مقدارش رو true کنی، اتفاقا این کار بهتر هست چون هر بار که متغیر رو دوباره تعریف میکنی و در آخر باید از بین ببره یک مرتبه constructor و destructor صدا میشن که برای برنامه یک مقداری سربار دارن (10 سال پیش)
برای این سوال پاسخی وجود ندارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .