متوجه نشدم این قسمتُ کامل!!!
اگه عدد n باشه، بخشپذیریش به 2 و چی بررسی میشه؟؟
بخشپذیری به 2 الی n / 2 بررسی میشه، یعنی بخشپذیری اش به 2 و 3 و 4 و 5 و ... و n / 2 بررسی میشه. بزرگترین عددی که بخشپذیری بهش بررسی میشه n / 2 است،
یعنی عدد تقسیم بر 2
فرضا عدد 101 را در نظر بگیرید، n / 2 اش می شود 50 (خرده اعشاری اش نادیده گرفته می شود). 101 اول است، اگر به هیچکدام از اعداد 2 و 3 و 4 و 5 و ... و 48 و 49 و 50 بخشپذیر نباشد.
اول از همه به عدد 2 تقسیم میشه که ببینیم عدد صحیح بدست میاد یا خیر!!
بعد به چی تقسیم میشه؟ n/2 همون عدد وارد شده تقسیم بر 2 نیست؟؟
بله، n / 2 همون عدد وارد شده تقسیم بر 2 است، بدون در نظر گرفتن اعشار حاصل از تقسیم.
این قسمت رُ هم متوجه نشدم
البته پس از پایان حلقه رُ متوجه شدم، ولی قسمت اولشو نه!!
شرط این حلقه را ببینید :
کد:
for (int i = 2; i <= n / 2; i++)
شرط این حلقه i <= n / 2 است. مادامی که i از n / 2 کوچکتر یا مساوی باشد حلقه ادامه پیدا می کند و مقدار i هم در هر مرحله افزایش می یابد.
یعنی تا زمانی ادامه پیدا می کند که i که از 2 شروع شده و هر بار یک واحد افزایش می یابد (++i) از n / 2 بزرگتر نشده باشد.
به محض اینکه i از n / 2 بزرگتر شد، شرط اجرای حلقه نقض می شود و از حلقه خارج می گردد.
حالا چه زمانی i از n / 2 بزرگتر می شود، در دو حالت :
حالت اول این است که i که از عدد 2 شروع می کند مدام افزایش یابد و به n / 2 برسد و n بر آن هم بخشپذیر نباشد و بخواهد برای عدد بعدی 1 + n / 2 اقدام کند.
حالت دوم این است که n در یک مرحله از اجرای حلقه بر i (که حالا یک عددی بین 2 الی n / 2 است) پخشپذیر باشد، در اینصورت شرط زیر برقرار است :
چون باقیمانده تقسیم صفر می شود و برقراری شرط در ادامه n را صفر می کند :
صفر شدن n به پایان یافتن حلقه منجر می شود، چرا؟ چون وقتی n صفر باشد، n / 2 هم می شود صفر. مقدار i از 2 شروع شده و هر چقدر هم که کوچک باشد، از 2 کوچکتر نیست،
پس شرط حلقه که i <= n / 2 بود برقرار نیست.
این حلقه ادامه می یابد، تا زمانی که یا از n / 2 هم بگذرد (که ثابت میشه عدد اول است)، یا بر عددی بخشپذیر باشد (که اول نیست و آنرا صفر می کنیم)
بعد از این مرحله آخر نباید j که به حلقه تکرار دادیم تو
int n, sum = 0;
اضافه شه؟؟؟؟
بستگی داره که کجا تعریف بشه، متغیر j باید حتما قبل از استفاده تعریف بشه و فقط یکبار تعریف بشه و این تعریف شدن j جایی صورت می گیره که قبلش int بیاد.
اون j باید به اون سطر int که شما اشاره کردید اضافه بشه
اگر داخل حلقه int j = 0 نوشته نشه، بجاش نوشته بشه j = 0 که تعریف نوع متغیر همراهش نیست.
اگر داخل حلقه for یا جای دیگری درست قبل از اولین استفاده از j نوع متغیر int نوشته بشه، تعریف متغیر صورت گرفته و
نباید جای دیگری برایش تعریف نوشته بشه.
چون من داخل حلقه for متغیر j را تعریف کرده بودم، دیگر در اون سطر جایی برای تعریف j نبود. اگر بخواهید در اون سطر کنار n و sum متغیر j را تعریف کنید، می توانید،
به شرطی که در حلقه for عبارت int j = 0 را به j = 0 تغییر دهید.
و یه درخواست دیگه
این مکان نما تا چند لحظه پیش خوب بود، الان هم پر رنگ تر شده و هم وقتی Enter میزدم نوشته هامو یه خط میاورد پایین تو برنامه اما الان نوشته ها رُ جا بجا نمیکنه!!!
فقط به سمت پایین میاد بدون هیچ خاصیتی (جایی کُد اشتباه بنویسم اگه بخوام اضافه کنم نمیشه، باید کُدمو تو تکست ویندوز ادیت کنم بیارم تو borland )
مشاهده پیوست 104021
ویرایشگر در محیط متنی دو وضعیت کلی و رایج داره، Insert و Overwrite که در اغلب ویرایشگر های متنی هست، حتی ویرایشگر های خیلی قدیمی.
پیشفرض وضعیت Insert است که شما و بقیه بهش عادت دارند و کاراکتر به متن قبلی اضافه می شه و متن قبلی رو پاک نمی کنه.
وضعیت Overwrite حالتی داره که کاراکتر روی متن قبلی قرار می گیره و متن قبلی عملا پاک میشه. کلید تغییر وضعیت اش معمولا Ins / Insert ئه.
دست تون روی کلید Insert یا Ins صفحه کلید خورده و وضعیت ویرایشگر رو از Insert به Overwrite تغییر داده اید. مجددا اون کلید را فشار دهید.