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

مشکل در تمرین بخش دوم

Mostafa  11 سال پیش  10 سال پیش
+1 0

سلام

من یک کد برای تمرینی که باید در اون مقسوم علیه های اول یک عدد رو استخراج کنیم نوشتم

ولی نمیدونم کجاش مشکل داره

 

ممنون میشم بررسی کنین

    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;
}
}
}
}
}
+5 0
والا با این کد تو در تو و پیچیده ای که شما نوشتین، کامپیوتر هم هنگ می کنه چه برسه به ما که بخوایم اینو بررسی کنیم:) خیلی ازم انرژی گرفت. برم استراحت کنم (11 سال پیش)
0 0
ممنون از پاسخ ... .... (11 سال پیش)
+2 0
دوستان کسی فرصت بررسی کد من رو نداره؟ ممنون (11 سال پیش)
0 0
الگوریتم حلتون چی بوده؟به فارسی توضیح میدید که با چه فکری در سرتون این کدها رو نوشتید؟ (11 سال پیش)
0 0
من هم در این بخش شدیدا مشکل دارم!دوستانی که میدونند راهنمایی کنند ماهم بفهمیم! (11 سال پیش)
0 0
دوست عزیز من کدت رو برای عدد 675 تست کردم همه ی مقسوم علیه ها رو نشون داد . یکی از مقسوم علیه ها 9 هستش خب حالا حساب کن index2==9 خب "t==1" پس 9 رو نشون میده طبق الگوریتمی که تو نوشتی. شما باید برای حلقه یک متغیر شمارشگر counter مشخص کنید که به ازای هر عددی که به index2 بخش پذیر باشد بهش اضافه بشه و بعد از حلقه for از کنترل if استفاده کنید با این شرط که اگر counter >2 بود که هیچ در غیر این صورت index2 رو نمایش بده (11 سال پیش)
0 0
@xuvi سلام توی این کد اول مقسوم علیه های mynumber3 رو بدست آوردم بعد خود اون مقسوم علیه رو با یه if و یه switch تست کردم چون اعداد اول فقط بر خودشون و عدد یک بخش پذیرن ، بنا براین اگر بر یک و خود اون عدد بخش پذیر بود ، گفتم چاپ کنه ، ولی کد درست کار نمیکنه علت چیه و من کجا رو اشتباه نوشتم؟ (11 سال پیش)
 برای این سوال 7 پاسخ وجود دارد.
پاسخ به سوال 
Saeed Mozaffari  11 سال پیش
+2 0

سلام. شما بعد از پیدا کردن مقسوم علیه عدد مورد نظر,دارید به وسیله 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;
}
}
0 0
مگه شنا این جا نگفته اید که مقسوم الیه های اول عدد255؟پس چرا از من تا عدد17 رو محاسبه میکنه؟درست کا میکنه یا نه؟ (11 سال پیش)
0 0
چون بقیه مقسوم علیه هایی که بدست میاد عدد اول نیستند. شما به جای 255 هر عددی که خواستی بذار... (11 سال پیش)
0 0
چون بقیه مقسوم علیه هایی که بدست میاد عدد اول نیستن. شما به جای 255 اعداد دیگه همامتحان کن. (11 سال پیش)
0 0
من درست منظورتون رو نفهمیدم!میشه واضح تر توضیح بدید؟ (11 سال پیش)
0 0
تمرین رو کی داده؟ بنظر من خودتونو درگیر این چیزا نکنین، سرچ کنید یه کد براش پیدا میشه. (11 سال پیش)
0 0
دوست عزیز کد شما اشتباه هستش و درست عمل نمیکنه. شما فرض کن عددی به 77 بخش پذیر باشه f==77. با این کد شما عدد 77 در نتایج درج میشه. منم اول با این روش شما قصد انجام داشتم که بعد از انجام متوجه شدم اگه بخوام به این شکل کد رو بنویسم به اعضای هر عدد اول ، یک عبارت کنترلی if...else بنویسم. (11 سال پیش)
0 0
شما جواب استاد رو درج کردید که خیلی داینامیکتر از جواب بنده هست.اما در رابطه با کد من شما فرض کنید عدد 154 رو در کد قرار بدیم.عدد 77 یکی از مقسوم علیه های 154 هست اما به دلیل اینکه 77 عدد اول نیست(یعنی به عدد 11 و 7 بخش پذیر است)پس جزو جوابها نخواهد بود. در کل اگر منظور بنده رو متوجه نشدید با دانستن جواب استاد دیگه مشکلی ندارید. (11 سال پیش)
0 0
(11 سال پیش)
0 0
ramin301 الان متوجه منظورتون شدم. بله با گذاشتن عدد77 این عددهم به اشتباه جزو جوابه نوشته میشه. فکر کنم با اضافه کردن یک else if برای عدد 7 مشکلش حل بشه اما برنامه بیش از حد خشک و زشت میشه.ممنون از راهنماییت. (11 سال پیش)
0 0
saeedmozaffari عزیز , من هم در اول این الگوریتم مد نظرم بود ولی این الگوریتم کلا اشتباه هستش . چون همانطوری که گفتم با این الگوریتم به ازای هر عدد اول باید یک عبارت کنترلی if else به الگورتیم اضافه کنیم که ه این ترتیب باید تا آخر عمرمون این الگوریتم رو بنویسیم (11 سال پیش)
پاسخ به سوال 
Saeed Mozaffari  11 سال پیش
+1 0

مقسوم علیه های عدد 255 اعداد= 1 . 3. 5 .15 .17 . 51 . 85 . 255  هستند.و تنها  اعداد 1 . 3 .5 . 17  اول هستند(یعنی به هیچ عدد دیگه ای بخش پذیر نیستند).پیشنهاد می کنم به جای 255 اعداد دیگه هم امتحان کنید.

پاسخ به سوال 
ramin301  11 سال پیش
+3 0

این جواب خود استاد هست که خیلی زیبا نوشته شده .معذرت میخوام که لینک رو یادم نمیاد قرار بدم دوستان کسی لینک رو بلده قرار بده

 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 0
بفرمایید در این تاپیک بوده : لینک (11 سال پیش)
0 0
@xuvi لینکی که دادین باز نمیشه!!! فکر کنم برای تغییرات استاد در فرایند باز شدن لینک ها هست (11 سال پیش)
پاسخ به سوال 
Navid  11 سال پیش
+1 0

سلام..من متوجه نمیشم این کد بالا رو...میشه توضیح بدین...تو اکلیپس هم که دقیقا این کد رو میزنم متوجه نمیشم...یکم راهنمایی کنین خودمون کد رو بنویسیم...لطف کنین یکم راهنمایی کنین...ممنون از همگی

+2 0
اینکه این الگوریتم کمی باعث گیج شدم میشه < دلیلش سورس اون نیست < دلیلش این هست که باید نسبت به مقسوم علیه ها اشمایی و تسلط داشته باشید و حداقل بتونید اون رو بصورت ریاضی حل کنید < بعدا سورس و الگوریتمش رو بنویسید < پیشنهاد میکنم چندین باز به همین ویدو از اموزش دقت کنید تا جا بیوفته (11 سال پیش)
0 0
چندین باری نگاه کردم...تو حالت عادی میتونم بگم چیکار باید بکنم اما بصورت کد نمیتونم پیاده کنم...... (11 سال پیش)
پاسخ به سوال 
ATRAS  11 سال پیش
+1 0

در کد بالا استاد از یک روشی استفاده کردن که نسبت به روش های دیگه پروسس کمتری مصرف میکنه تا یک عدد اولو تشخیص بده.

(خب ما همیشه از 2 شروع میکنیم تا کمتر مساوی یک یا کمتر مساوی نصف  عدد و بهش میگیم تو این حلقه که داری محاسبه میکنی اگر عدد ما بیشتر از یک بار بر یک عدد دیگه تقسیم شد و باقی ماندش صفر شد اون عدد اول نیست در غیر این صورت اوله و بعد میگیم عددی که باقی مانده تقسیمش بر این عدد صفر شده بودو به عنوان مقسوم الیه برگردون.)  

حالا روش استاد.(استاد میگن یک حلقه داریم از 2 شروع میشه تا کمتر مساویه عدد مورد نظر و بعد تو حلقه میگه اگر عددی دیدی که باقی مانده تقسیمش بر عدد ما صفر شد برو  تو حلقه بعدی.خب اینجا روش استاد میاد وسط.میگه این عددی که در حلقه بالا باقی مانده تقسیمش بر عدد ما صفر شد رو به عنوان مقسوم علیه ما بزارش کنار و حلقرو از 2 شروع کن تا کمتر از اون مقسوم علیه ما پیش برو.نکته:(اگر عددی قرار باشد باقی مانده تقسیمش بر عدد ما صفر شود حتما باقی ماندش هم بر مقسوم علیه اون عدد صفر میشود).پس مقسوم علیه رو با اعداد کمترش تقسیم میکنیم اگر باقی مانده این تقسیم ها هیچ کدومشون صفر نشد میره ادامه حلقه اولو میره که شاید اعداد جلوتر مقسوم علیه این عدد باشن.ولی اگر یکی هم پیدا شد که باقی مانده تقسیمش با مقسوم علیه ما صفر شد نتیجه میگیریم عدد ما اول نیست پس میگیم کلا دیگه ادامه نده و از دوتا حلقه خارج شو. )

0 0
کدی رو مینویسم اما فقط 3 و 5 رو نشون میده... (11 سال پیش)
+1 0
کدتونو درج کنین تا بفهمیم مشکل از کجاست. (11 سال پیش)
پاسخ به سوال 
Navid  11 سال پیش
0 0

مگه دقیقا الگوریتمی که استاد گفتن نیست ؟...کجاش اشتباه میکنم ؟

با این جمله مشکل دارم...

" اگر باقی مانده این تقسیم ها هیچ کدومشون صفر نشد میره ادامه حلقه اولو میره که شاید اعداد جلوتر مقسوم علیه این عدد باشن.ولی اگر یکی هم پیدا شد که باقی مانده تقسیمش با مقسوم علیه ما صفر شد نتیجه میگیریم عدد ما اول نیست پس میگیم کلا دیگه ادامه نده و از دوتا حلقه خارج شو."

+2 0
دوست عزیز نه شما اشتباه میکنین نه کد.این برنامه اعداد اولو نمیده بلکه مقسوم علیه هایی رو میده که خودشون عدد اولن و مقسوم علیه های عدد مورد نظر شما هم هستن.یعنی مقسوم علیه های اول یک عددو میده.که برای 100 فقط همون 2 و 5 هست.حالا اگر عددتون مثلا 255 باشه جواب میشه 3 ، 5 ، 17 (11 سال پیش)
0 0
ببخشید یه سوال هم داشتم...چرا از 2 شروع میکنیم r و y رو ؟؟؟ ... (11 سال پیش)
0 0
آقا دستت درد نکنه فهمیدم...خیلی خیلی ممنون..... (11 سال پیش)
پاسخ به سوال 
GR  10 سال پیش
0 0

  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);
}
}
}

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