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

مقسوم علیه های اول یک عدد

GOOD  10 سال پیش  10 سال پیش
+1 0

با سلام این الگوریتم درست کار میکنه یا نه اگر میکنه نظرتون چیه و اگر مشکل داره مشکلش چیه ممنون

 int n = 18;
        if (2 < 3) {
            Log.i("LOG", "maghsom alayh  = " + 1);
            Log.i("LOG", "maghsom alayh  = " + n);
            for (int i = 2; i < n; i++) {
                if (n % i == 0) {
                    Log.i("LOG", "maghsom alayh  = " + i);

                    if (i == 2) {

                        Log.w("LOG", "maghsom alayh aval = " + i);
                    } else if (i % 2 == 0) {
                        Log.e("LOG", "aval nist  = " + i);
                    } else if (i == 3) {
                        Log.w("LOG", "maghsom alayh aval = " + i);
                    } else if (i == 5) {
                        Log.w("LOG", "maghsom alayh aval = " + i);

                    } else if (i == 7) {
                        Log.w("LOG", "maghsom alayh aval = " + i);
                    } else if (i == 9) {
                        Log.e("LOG", "aval nist = " + i);

                    }

                }

            }
        }
0 0
درست کار میکنه؟ (10 سال پیش)
0 0
مشکل داره اولا در دومین لاگ عدد 18 رو چاپ می کنه که اول نیست (10 سال پیش)
0 0
مشکل داره اولا در دومین لاگ عدد 18 رو چاپ می کنه که اول نیست الگوریتم شما عدد 6 رو چاپ می کنه که اول نیست. (10 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
A.A  10 سال پیش
+2 0

سلام.ببینید ما تعداد محدودی عدد اول نداریم پس نمیتونیم اونهارو یکی یکی چک کنیم پس این راه حل کار ماست:

اول که عددو تعریف میکنیم و همچنین یک boolean.بعد میایم یه حقه ی for مینویسیم و توی اون روی یک متغیر که یکی یکی بهش تست میکنیم که آیا متغیر اصلی بر اون بخش پذیر هست یا نه و اگر بخشذیر بود روی این مقسو علیه همین کار هارا انجام میدهیم تا ببینی بغیر از خودش و یک مقسوم علیه دارد یا نه و اگر نداشت مقدر  راboolean مساوی true قرار میدهیم و میگوییم اگر boolean مساوی true بود آن مقسوم علیه چاپ شود.امیدوارم منظورمو رسونده باشم:

  int num = 100;
        for (int i = 2; i < num; i++) {
            if (num % i == 0) {
                boolean g = false;
                for (int z = 2; z < i; z++)
                    if (i % z == 0) {
                        g = true;
                    }
                if (g == false) {
                    Log.i("LOG", "number is: " + i);
                }
            }
        }

 

0 0
ممنون میشه عددی رو بگید که الگوریتم من باش کار نکنه ممنون میشم (10 سال پیش)
0 0
و یک سوال دیگه این که الگوریتم کاربرد زیادی داره یا کم؟! (10 سال پیش)
+1 0
if (2 < 3) { ؟؟؟؟؟؟؟؟؟؟ بدترین شکل ممکن برا نوشتن الگوریتم (10 سال پیش)
0 0
شما تا زمانی که نتونی الگوریتم نویسی یاد بگیری یادگیری برنامه نویسی بی فایده هست . چرا ؟ چون حتی اگه برنامه نویس حرفه ای هم بشی و همه چیز اون زبان رو مسلط باشی ولی الگوریتم بلد نباشی ، بعد میبینی برنامت نتایج اشتباه میده ، اونوقت فکر میکنی که برنامه نویسی بلد نیستی ، در صورتی که الگوریتم اشتباه بوده . برنامه نویسی ، حرفه ای هست که شما باید همیشه خیالت بابت الگوریتم راحت باشه ، یعنی مطمئن باشی که الگوریتمی که داری ، روی کاغذ 100 % جواب درست میده ، و از حالا به بعد فکرت فقط روی برنامه نویسی باشه که چطوری این الگوریتم درست رو روی کامپیوتر اجرا کنی . به نظر من شما روی برنامه های کوچک کار کن تا زمانی که نتایج درست بگیری و الگوریتم نویسی برات آسون بشه . مثل برنامه 1 - مقسوم علیه های یک عدد 2 - مقسوم علیه های اول یک عدد 3 - محاسبه فاکتوریل یک عدد 4 - چاپ اعداد یا سری فیبوناتچی 5 - محاسبه مجموع ارقام یک عدد n رقمی 6 - محاسبه مجموع عددهای بین دو عدد m و n دریافت شده 7 - و در حد خیلی ساده برای تمرین چاپ اعداد زوج یا فرد بین m و n و . . . (10 سال پیش)
پاسخ به سوال 
کاشی زاده  10 سال پیش
+2 0

در رابطه با الگوریتم نویسی اینجا پاسختون رو دادم .

ولی لازمه چند نکته رو در مورد الگوریتم نویسی اضافه کنم :

  1. هرچه الگوریتم کوتاه تر باشد ، بهتر است .
  2. هر چه الگوریتم ساده تر باشد بهتر است .
  3. هرچه الگوریتم داینامیک تر باشد بهتر است .

در رابطه با مورد 1 :

الگوریتمی که شما نوشتید شاید به نظر صحیح برسه ، اما مسیر الگوریتم شما طولانی شده .

طولانی شده بی جهت الگوریتم باعث مشکلات مختلفی از جمله کاهش سرعت اجرا ، کاهش انعطاف پذیری ، شلوغی کد میشود .

مورد دوم :

همونطور که در لینکی که قرار دادم اشاره کردم ، الگوریتم چیز عجیبی نیست و نباید باشه ، هر چقدر ساده تر نوشته بشه ، خواناییش بهتر ، کارایی بیشتر و توسعه آن راحت تر است .

همونطور که دوستمون هم اشاره کردن دستوری که نوشتی if 2 < 3  یک دستور اضافی هست که نوشتنش هیچ لزومی نداره چون همیشه عدد 2 از 3 کوچکتر هست و هرگز خلاف این قضیه صورت نمیگیرد .

مورد سوم :

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

 

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

 

0 0
ممنون (10 سال پیش)

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