با سلام
من هر چی می کنم نمیفهمم چطور عددای اول زیر 1000 رو بدست بیارم
اگه کسی میگه با آموزش و توضیح خوب بده
با تشکر
با سلام
من هر چی می کنم نمیفهمم چطور عددای اول زیر 1000 رو بدست بیارم
اگه کسی میگه با آموزش و توضیح خوب بده
با تشکر
سلام
اتفاقا من یک برنامه برای این نوشتم
الان برات آپلود می کنم
به کد ها خوب دقت کن
اگر نفهمیدی بگو برات توضیح بزارم
البته توی سیستم خونه ندارمش
توی کامپیوتر سر کاره
شنبه برات می آپم
اگر وقت نداری تا شنبه یک توضیح تقریبی بهت می دم خودت بنویس:
ببین من دو تا تکس باکس گذاشتم
یکی با برچسب"از عدد"
یکی هم با برچسب "تا عدد"
بعد اعداد رو طرف می زنه و اعداد اول بین این دو عدد رو برنامه بهش میده
البته اگر مثلا بزنی از عدد 0 تا 100000 اعداد اول رو در بیار حدود 30 ثانیه ای طول می کشه
برای نوشتن این برنامه:
فرض کن اسم تکس اولی a و اسم تکس دومی b هست
یک حلقه for می زاریم از a تا b
بعد توی این حلقه یک حلقه دیگه می زاریم از 2 تا i (متغیر حلقه اوی)
بعد داخل این حلقه تست می کنیم که آیا i بر هر کدوم از اعداد حلقه بخش پذیره یا نه
آخر حلقه اگر بر هیچ کدوم بخش پذیر نبود بعد توی لیست باکس اضافش می کنیم
به همین راحتی
البته اگه الان این کد رو بزاری چندین تا مشکل می خوری
مثلا این عدد بر خودش بخش پذیره و بنابراین هیچ عددی رو اول تشخیص نمیده
و چندین تای دیگه که الان دقیقا یادم نیست
و چند تا ریزه کاری هم برای بالا بردن سرعت کار داره
که یکیش اینه که اعداد زوج رو الکی تست نکنه چون صد در صد اول نیستن
و
و
و
که الان خوب یادم نیست
برای همین اگر تا شنبه صبر کنی برات خود برنامه رو می زارم
تازه یک کد دیگه هم برای برنامه نوشتم که مقسوم علیه های یک عدد رو لیست می کنه
و می خوام توسعش بده که ب.م.م و ک.م.م دو عدد رو هم بگیره![]()
من دو سال پیش یه فرمولی بدست اوردم اعداد اول زیر 100 رو طبق یه قانون خاص در می آورد ! ولی بعد از 100 جوابش دیگه درست در نمی اومد !!!
اگه اون فرمول رو پیدا کردم می زارم چون در اون صورت دیگه برنامه نویسیش خیلی راحت تر میشه و زمان کمتری رو هم میبره !!!!!
ولی باید بشینم دوباره از اول پیداش کنم !!!!
بیا عزیزم اینم کدش:
Dim sum As Integer
For i = 1 To 1000
sum = 0
For j = 1 To i
If i Mod j = 0 Then sum = sum + 1
Next j
If sum = 2 Then Label1.Caption = Label1.Caption & " " & i
Next i
label1 خروجی هست و طرز کارش این طوره که :
یه for از یک تا 1000 می شماره (for اول) for دوم هم از یک تا i و داخل for این اتفاق میفته:
مثلا i = 5 شده
for دوم از 1 تا 5 می شماره و در مرحله ی اول i=1 است و j=1
باقیمانده ی i تقسیم بر j رو حساب میکنه که اگر مساوی صفر شد یک عدد به متغیر sum اضافه میکنه و این حلقه تا آخر یعنی 5 میره و اگر sum = 2 شد اون عدد یعنی i که 5 هست رو به label1 اضافه میکنه.
عدد اول عددی هست که به خودش و یک بخش پذیر باشه یعنی دو عدد پس هروقت sum =2 شد اون رو عدد اول حساب میکنه و به label1 اضافه میکنه.
اگه سوالی بود در خدمتم.
موفق باشی.
یه سوال !! چه طوری یک رو برداشتی ؟؟؟ چون که 1 عدد اول نیست ! ولی 1 تقسیم بر 1 مساوی 0 میشه ! و طبق برنامه باید 1 رو هم بنویسه ؟
Last edited by bersam; 30-10-2008 at 21:30.
سلامیه سوال !! چه طوری یک رو برداشتی ؟؟؟ چون که 1 عدد اول نیست ! ولی 1 تقسیم بر 1 مساوی 0 میشه ! و طبق برنامه باید 1 رو هم بنویسه ؟
اولا یک تقسیم بر یک میشه 1 نه صفر![]()
ولی یکی مود یک میشه صفر
اگر به کدی که این دوست عزیز نوشتن دقت کنی می بینی که اگر عدد مربوطه بر دو عدد یعنی یک و خودش بخش پذیر باشه میاد توی لیست
ولی یک فقط بر خودش که همون یکه بخش پذیره
البته فکر کنم اینجوری باشه
___________________________
خیلی برام جالب بودDim sum As Integer
For i = 1 To 1000
sum = 0
For j = 1 To i
If i Mod j = 0 Then sum = sum + 1
Next j
If sum = 2 Then Label1.Caption = Label1.Caption & " " & i
Next i
ایول من کلی کد برای یک همچین کاری نوشتم
ولی شما با این کد چند خطه حلش کردی![]()
البته اگر توی یک لیست باکس اضافه بشه خیلی قشنگ تر در میاد
البته من عذر خواهی می کنم
چون بعضا دیدم اینجا همه زود بهشون بر می خوره![]()
مخصوصا وقتی درباره برنامشون نظری میدی![]()
البته تو که ایشالله اینجوری نیستی![]()
سلام
اينم برنامه اي كه قولش رو داده بودم
دو تا عدد ورودي مي گيره
اعداد اول بينشون رو ميده
مقسوم عليه هاي يك عدد رو هم اگر خواستين بهتون ميده
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خيلي ممنون
از اينكه مي بينم انجمن كاربراي فعال زياد داره
دست همتون درد نكنه
موفق باشيد
راستي نمي تونيم عدداي بيشتر از 1000 رو به دست بيازيم يا نه؟؟؟؟؟
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)