PDA

View Full Version : سوال ساده : شناسایی عدد اول



skypro
دوشنبه 10 اردیبهشت 1386, 23:04 عصر
من میخوام یه برنامه ساده بنوسیم که فقط بگه عددی که وارد میکنیم اول هست یا نه ،

به این ترتیب باید یک لیبل جهت شناسایی ؟ یک تکست باکس جهت نوشتن ادد ؟ یک کمند باتن جهت محاسبه داشته باشیم ؟ به مانند شکل زیر ؟
اسم Label هم lbl1 و اسم Textbox رو txt1 و اسم CommandButton رو cmdok گذاشتم ، اگر امکانش هست 2 ، 3 خط کدی که باید داخل CommandButton بنویسم که بگه عدد اول هست یا نه رو بگین ، ممنون از شما



http://m1.freeshare.us/139fs978051_th.jpg (http://m1.freeshare.us/view/?139fs978051.jpg)

Capitan zapoa 2000
دوشنبه 10 اردیبهشت 1386, 23:10 عصر
khob in hamash be riazi rabt dare faghat rahbanai mikonam che adadi avale adadi ke hich maghsom elaihi gheir az 1o khodesh nadashte bashe albat aksre zaban ha tabeii barai inkar daran bayad mostanadat zabono negah koni

skypro
دوشنبه 10 اردیبهشت 1386, 23:12 عصر
ممنون از شما ، اعداد اول رو که میشناسیم ، اعدادی که فقط به یک و خودشون بخش پذیرن و باقیمانده صفر رو در این صورت میدن [ Mod = 0 ؟ ] برنامه مربوط رو میخوام

vb_nima
دوشنبه 10 اردیبهشت 1386, 23:22 عصر
Private Sub cmdok_Click()
Dim x As Integer
Dim str As String

x = Val(txt1.Text)
str = "Adad aval ast"
If x > 2 Then
For i = 2 To x - 1
If x Mod i = 0 Then
str = "Adad aval nist"
Exit For
End If
Next i
End If
lbl1.Caption = str
End Sub

skypro
دوشنبه 10 اردیبهشت 1386, 23:25 عصر
آقا نیما شرمنده کردی عزیز ، دمت گرم

skypro
سه شنبه 11 اردیبهشت 1386, 09:05 صبح
آقا نیما اگر توضیح جانبی بدی هم ممنون میشم ، کلا به صورت فارسی بگی چه چیزی رخ میده ؟
یه دایمیشن X میگیرم از نوع عدد صحیح ؟ یه دایمیشن str از نوع رشته ای ؟ x چی هست ؟ کلا عدد صحیحه ؟ Val رو به چه خاطر استفاده میکنیم ؟ چرا فرض رو بر x بزرگتر از 2 قرار میدیم ؟ For i به طور کلی به چه معنی هست ؟ حلقه For & Next ؟ میشه توضیح بدین ؟ lbl1.Caption = str یعنی مقدار عددی str رو در لیبل 1 نشون بده ؟
ممنون از شما

vb_nima
سه شنبه 11 اردیبهشت 1386, 09:54 صبح
ببینم شما تازه با وی بی آشنا شدید.
بگذریم.
x یک متغیر صحیح برای نگهداری عدد مورد نظر است.
str یک متغیر رشته ای برای نگهداری پیغامی که در lbl1 نوشته می شود است.
تابع val مقدار عددی txt1 را برمیگرداند چون عبارت داخل txt1 رشته ای است یعنی تبدیل نوع میکند.
در ابتدا فرض میکنیم عدد اول است پس strرا برابر یه جمله مبنی بر اول بودن عدد قرار میدهیم.
بعد تست میکنیم که عدد 1 یا 2 نباشد چون این دو عدد خود شون اولند. اگر x کوچکتر از 2 بود همون جمله عدد اول است در lbl1 نوشته میشود.
اگر بزرگتر از 2 بود وارد یک حلقه میشود و از عدد 2 تا عدد X-1 را میشمارد. و باقیمانده x را بر آن عدد محاسبه می کند اگز با قیمانده صفر شد یعنی این عدد بر یکی از اعداد کوچکتر بخش پذیر است . پس اول نیست. و مقدار str را تغییر میدهیم و از for با exit for خارج میشویم.
اگر در هیچ عددی باقیمانده صفر نشد متغیر str دستنخورده باقی می ماند و در آخر در lbl1 چاپ میشود.
دلیل استفاده از for از 2 تا x-1 هم این است که عددی اول است که بز تمام اعداد قبل از خودش بخش پذیر نباشد به غیر از یک و خودش خوب بعنی از 2 تا x-1 بخش پذیر نباشد.
البته بعضی مواقع می گویند عددی اول است که بر نصف اعداد قبل از خودش بخش پذیر نباشد یعنی از 2 تا x\2 اینم درسته شما میتونید توی for از این مقادیر هم استفاده کنید.

mehran8
سه شنبه 11 اردیبهشت 1386, 15:42 عصر
khob in hamash be riazi rabt dare faghat rahbanai mikonam che adadi avale adadi ke hich maghsom elaihi gheir az 1o khodesh nadashte bashe albat aksre zaban ha tabeii barai inkar daran bayad mostanadat zabono negah koni


برادر فارسی تایپ کن !