ورود

View Full Version : بدست آوردن اعداد تام



shadow+98
جمعه 04 بهمن 1392, 18:55 عصر
درود بر شما
دوستان عذر خواهی میکنم بخاطر پست تکراری که بوجود آمد
من این کد را در وبسایت شما دیدم و فکر کردم برای ویژوال بیسیک 6 است اما بعد دیدم برای vb.net بوده
Dim temp As Long = 0
ListBox1.Items.Clear()


For i = 2 To System.Convert.ToInt32(TextBox1.Text) Step 2
For j = 1 To i / 2
If i Mod j = 0 Then
temp += j
End If
Next
If temp = i Then
ListBox1.Items.Add(i)
End If
temp = 0
Next



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

سید حمید حق پرست
جمعه 04 بهمن 1392, 21:47 عصر
سلام علیکم
بفرمایید :
Dim A As Long, B As Long, C As Long
A = Val(Text1.Text)
For B = 1 To A
If A Mod B = 0 Then
C = C + B
End If
Next
If C - A = A Then
List1.AddItem A
End If
موفق باشید.

یا علی (ع)

سید حمید حق پرست
جمعه 04 بهمن 1392, 22:40 عصر
کد بالا فقط عددی که در تکست باکس وارد میکنیم میگه تام هست یا نه، کد vb.net که اجرا کردم دیدم اعداد تام بین 2 تا عددی که در تکست باکس وارد میکنیم بدست میاره.
اینم دقیقا همون کد vb.net با vb6 :
Dim A As Long, B As Long, C As Long
List1.Clear
For B = 2 To Val(Text1.Text) Step 2
DoEvents
For C = 1 To B / 2
If B Mod C = 0 Then
A = A + C
End If
Next
If A = B Then
List1.AddItem B
End If
A = 0
Next
موفق باشید.

یا علی (ع)

shadow+98
جمعه 04 بهمن 1392, 23:50 عصر
دوست عزیز با تشکر از اینکه جواب دادیند.
من عدد تام 6و 28 و 496 و ۸۱۲۸ و عدد ۳۳۵۵۰۳۳۶ را پیدا کرد. عدد ششم هم که ۸۵۸۹۸۶۹۰۵۶ است پیدا کردم اما درون vb نمیزنه و به مقدار گیر میده میدونم چون داده ها نوع long گرفته شده وتا 2میلیارد رو شناسایی میکنه اما این عدد از دو میلیارد بالاتر میزنه و نمیشناسه من از نو currency گرفتم ولی باز هم گیر داد. میشه کاریش کرد؟

----------------------------------------------------------------------------------------
نمیشه تو حلقه انداخت کد بالا ( کد خودتونو ) که از 1 تا مثلا ۳۳۵۵۰۳۳۶ رو برود و خودش پیدا کنه و بزار داخل لیست باکس؟
من داخل حلقه for "ذاشتم ولی کار نکرد نمیدونم حتما مشکل از کار من بوده میشه راهنمایم کنید؟

ممنون از زحماتتون.

سید حمید حق پرست
شنبه 05 بهمن 1392, 01:48 صبح
متغیر B یا هر سه رو از نوع Variant تعریف کنید و سپس تست کنید.
موفق باشید.

یا علی (ع)

سید حمید حق پرست
شنبه 05 بهمن 1392, 03:28 صبح
سلام علیکم
بعد اجرا با عدد مورد نظر شما فهمیدم بخاطر دستور Mod ارور میده
کد پست 2 بصورت زیر بنویسید :
Dim A As Variant, B As Variant, C As Variant
A = Val(Text1.Text)
For B = 1 To A
DoEvents
If A - Int(A / B) * B = 0 Then
C = C + B
End If
If C - A = A Then
List1.AddItem A
End If
Next
کد پست 3 هم بصورت زیر :
Dim A As Variant, B As Variant, C As Variant
List1.Clear
For B = 2 To Val(Text1.Text) Step 2
DoEvents
For C = 1 To B / 2
If B - Int(B / C) * C = 0 Then
A = A + C
End If
Next
If A = B Then
List1.AddItem B
End If
A = 0
Next
موفق باشید.

یا علی (ع)