مشکل در تمرین بخش دوم
سلام
من یک کد برای تمرینی که باید در اون مقسوم علیه های اول یک عدد رو استخراج کنیم نوشتم
ولی نمیدونم کجاش مشکل داره
ممنون میشم بررسی کنین
int myNumber3 = 255;
for (int index2 = 1; index2 <= myNumber3; index2++) {
if (myNumber3 % index2 == 0) {
for (int t = 1; t <= index2; t++) {
if (index2 % t == 0) {
switch (t) {
case 1:
Log.i("Log", "Tot Found: " + index2);
break;
case 255:
Log.i("Log", "Tot Found: " + index2);
break;
default:
continue;
}
}
}
}
}
سلام. شما بعد از پیدا کردن مقسوم علیه عدد مورد نظر,دارید به وسیله for دوم از مقسوم علیه بدست اومده مجددا مقسوم علیه میگیرید.درصورتیکه باید فقط چک کنید که آیا این مقسوم علیه بدست اومده اول هست یا نه... این جوابی هست که من بدست آوردم.پیشنهاد می کنم داخل eclips امتحانش کنی.(توضیح= در این روش اگر switch را نذاریم اعداد 2و3و5 ,که اول هستند به ما نشان داده نمیشوند.) ....امیدوارم به جواب رسیده باشی.
int r = 255;
for (int f = 1; f <= r; f++) {
if (r % f == 0) {
switch (f) {
case 2:
Log.i("loga", "result is : 2");
break;
case 3:
Log.i("loga", "result is : 3");
break;
case 5:
Log.i("loga", "result is : 5");
break;
}
if (f % 2 == 0) {
continue;
} else if (f % 3 == 0) {
continue;
} else if (f % 5 == 0) {
continue;
} else {
Log.i("loga", "result is : " + f);
}
} else {
continue;
}
}
مقسوم علیه های عدد 255 اعداد= 1 . 3. 5 .15 .17 . 51 . 85 . 255 هستند.و تنها اعداد 1 . 3 .5 . 17 اول هستند(یعنی به هیچ عدد دیگه ای بخش پذیر نیستند).پیشنهاد می کنم به جای 255 اعداد دیگه هم امتحان کنید.
این جواب خود استاد هست که خیلی زیبا نوشته شده .معذرت میخوام که لینک رو یادم نمیاد قرار بدم دوستان کسی لینک رو بلده قرار بده
int number = 675;
for (int i = 2; i <= number; i++) {
// آیا متغیر نامبر به آی بخش پذیر است
if (number % i == 0) {
// بله پس آی یک مقسوم علیه نامبر است
// فرض کنیم آی اول است
boolean z = true;
// ببینیم آیا مثال نقضی پیدا می شود
for (int j = 2; j < i; j++) {
if (i % j == 0) {
// عددی کوچکتر از آی پیدا شد که آی به آن بخش پذیر باشد پس آی اول نیست
z = false;
// دیگر ادامه دادن فایده ندارد
break;
}
}
// آیا به این نتیجه رسیدیم که آی اول است
if (z) {
// بله، بود پس چاپش می کنیم
Log.i("LOG", "" + i);
}
}
}
سلام..من متوجه نمیشم این کد بالا رو...میشه توضیح بدین...تو اکلیپس هم که دقیقا این کد رو میزنم متوجه نمیشم...یکم راهنمایی کنین خودمون کد رو بنویسیم...لطف کنین یکم راهنمایی کنین...ممنون از همگی
در کد بالا استاد از یک روشی استفاده کردن که نسبت به روش های دیگه پروسس کمتری مصرف میکنه تا یک عدد اولو تشخیص بده.
(خب ما همیشه از 2 شروع میکنیم تا کمتر مساوی یک یا کمتر مساوی نصف عدد و بهش میگیم تو این حلقه که داری محاسبه میکنی اگر عدد ما بیشتر از یک بار بر یک عدد دیگه تقسیم شد و باقی ماندش صفر شد اون عدد اول نیست در غیر این صورت اوله و بعد میگیم عددی که باقی مانده تقسیمش بر این عدد صفر شده بودو به عنوان مقسوم الیه برگردون.)
حالا روش استاد.(استاد میگن یک حلقه داریم از 2 شروع میشه تا کمتر مساویه عدد مورد نظر و بعد تو حلقه میگه اگر عددی دیدی که باقی مانده تقسیمش بر عدد ما صفر شد برو تو حلقه بعدی.خب اینجا روش استاد میاد وسط.میگه این عددی که در حلقه بالا باقی مانده تقسیمش بر عدد ما صفر شد رو به عنوان مقسوم علیه ما بزارش کنار و حلقرو از 2 شروع کن تا کمتر از اون مقسوم علیه ما پیش برو.نکته:(اگر عددی قرار باشد باقی مانده تقسیمش بر عدد ما صفر شود حتما باقی ماندش هم بر مقسوم علیه اون عدد صفر میشود).پس مقسوم علیه رو با اعداد کمترش تقسیم میکنیم اگر باقی مانده این تقسیم ها هیچ کدومشون صفر نشد میره ادامه حلقه اولو میره که شاید اعداد جلوتر مقسوم علیه این عدد باشن.ولی اگر یکی هم پیدا شد که باقی مانده تقسیمش با مقسوم علیه ما صفر شد نتیجه میگیریم عدد ما اول نیست پس میگیم کلا دیگه ادامه نده و از دوتا حلقه خارج شو. )
مگه دقیقا الگوریتمی که استاد گفتن نیست ؟...کجاش اشتباه میکنم ؟
با این جمله مشکل دارم...
" اگر باقی مانده این تقسیم ها هیچ کدومشون صفر نشد میره ادامه حلقه اولو میره که شاید اعداد جلوتر مقسوم علیه این عدد باشن.ولی اگر یکی هم پیدا شد که باقی مانده تقسیمش با مقسوم علیه ما صفر شد نتیجه میگیریم عدد ما اول نیست پس میگیم کلا دیگه ادامه نده و از دوتا حلقه خارج شو."

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);
}
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .