مشاهده نسخه کامل
: اين برنامه مشكلي داره؟
كد زير برنامه اي هست كه يك عدد از كاربر مي گيره و بعدش معلوم مي كنه كه اين عدد اول هست يا نه مي خواستم بدونم آيا برنامه مشكلي داره يا نه فقط شما بگيد مشكلش چي هست حلش با خودم.
ممنون ميشم.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Omid PLUS
18-12-2008, 01:50
كد زير برنامه اي هست كه يك عدد از كاربر مي گيره و بعدش معلوم مي كنه كه اين عدد اول هست يا نه مي خواستم بدونم آيا برنامه مشكلي داره يا نه فقط شما بگيد مشكلش چي هست حلش با خودم.
ممنون ميشم.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
از این کد استفاده کنی درست کار میکنه:;)
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
hamidreza_buddy
18-12-2008, 01:59
به نظر درست می آد. ولی
1- چرا
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
رو توی تابع نگذاشتی تا اون جا چک کنه و دیگه لاز م نباشه بیرون از تابع این تست رو انجام بدی. به عبارتی باید یک وظیف رو به طور کامل به یک تابع بسپاری تا اون تابع به صورت ماژولی جدا از برنامه باشد که فقط ورودی می گیرد و خروجی می دهد.
2- این درست است:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ولی چک کردن تا رادیگال num کافی است. یعنی کد زیر:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته باید از کوچکتر مساوی حتما استفاده شود و نه کوچکتر خالی.
همچنین با بررسی عدد دو دیگر نیازی به بررسی اعداد زوج نیست.
زیرا مثلاً اگر عددی بر 2 بخش پذیر نباشد، حتماً بر 4 هم بخش پذیر نیست و اگر بر دو و سه بخش پذیر نباشد، بر 6 هم حتماً بخش پذیر نیست.
پس می توانی این تغیر را هم به برنامه بدهی:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
پس می بینید که به جای num-2 عدد، فقط بر sqrt(num)/2 عدد باقیمانده گیری کردیم که سرعت را خیلی افزایش می دهد.
این ها هم جزء مباحث نظریه اعداد است!
مباحث پیشرفته تری در تشخیص و تولید اعداد فرد بسیار بزرگ (برای کاربردهای رمزنگاری) در مباحث نظریه اعداد موجود است. مثلاً قضیه فرما (Fermat) و ...
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.