PDA

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



ehsanocx
چهارشنبه 29 اردیبهشت 1389, 00:23 صبح
دوستان فاصله اعداد ائل رو بدست میارم یک صفر ائلش اضافی نشون میده میشه بگین ایراد کارم کجاست؟ با تشکر

Dim d1, d2, d3, mod1, temp, pn As Integer, test As Boolean
Dim L(1000) As Integer

()Private Sub cmdFirst_Click
pn = 1
List1.Clear
d2 = 0
d3 = 0

mod1 = 1
test = False
'=========================================
( For d1 = 2 To Val(txtN.Text
( d2 = Int(d1 \ 2
For d3 = 2 To d2
mod1 = d1 Mod d3
If mod1 = 0 Then
test = True
End If
Next d3
'========================================
If test = False Then
List1.AddItem d1
List2.AddItem (d1 - pn) - 1
( If (d1 - pn - 1) = 1 Then List3.AddItem (pn & " - " & d1

pn = d1

ElseIf test = True Then
test = False
End If
Next d1


'-----------------------------------------
End Sub

daniyal_1363
چهارشنبه 29 اردیبهشت 1389, 09:57 صبح
فکر نمیکنم زیاد سخت باشه

ولی بهتره پروژه تو بزاری تا تصحیح کنن:چشمک:

ehsanocx
چهارشنبه 29 اردیبهشت 1389, 19:33 عصر
49264

اینم برنامه ای میشه اصلاحش کنید ؟

daniyal_1363
پنج شنبه 30 اردیبهشت 1389, 10:00 صبح
اینم درستش

فقط کافی بود این کد رو ...




List2.AddItem (d1 - pn) - 1




انجوری تغییر بدی




If d1 <> 2 Then
List2.AddItem (d1 - pn) - 1
End If

ehsanocx
پنج شنبه 30 اردیبهشت 1389, 20:47 عصر
دوست من میشه بگی چطوری این فرمول فاصله دو تا عدد رو محاسبه می کنه ؟ کمی توضیح بدی؟

m_test
پنج شنبه 30 اردیبهشت 1389, 23:50 عصر
اعداد اول (http://4linecode.mihanblog.com/post/220)



ارشیو بزرگ سورس کد (http://4linecode.mihanblog.com/)

daniyal_1363
جمعه 31 اردیبهشت 1389, 13:55 عصر
در این قسمت از برنامه




If test = False Then
List1.AddItem d1
If d1 <> 2 Then
List2.AddItem (d1 - pn) - 1
End If
pn = d1
ElseIf test = True Then
test = False
End If



زمانی که d1 به عنوان عدد اول شناخته میشه Pn = d1 قرا میگیره ( در خطی که قرمز شده ) و حلقه دور میخوره (این اصلاح منه :بامزه:)

چون اولین عدد ما 2 هستش لازم نیست از عدد قبلش کم بشه (یعنی فاصله عدد 2 با عدد 1 که قبل از 2 هستش رو لازم نداریم بنابراین اگه d1 برابر 2 بود لازم نیست فاصله ای رو مشخص کنه که همون مشکل شما هم بود (یه صفر اضافه)(با رنگ سبز نشون داده شده ))


درخطی که با آبی مشخص شده معلوم میشه که عدد ما اول هست یا نیست

حالا اگر عدد ما اول بود چه اتفاقی میفته ؟

اولین خط اون رو به لیست 1 ما اضافه میکنه

دومین خط چک میکنه که اگه عدد برابر با 2 نبود عدد اول پیدا شده الان رو از عدد اول قبلی ما که همون(pn) هست کم کنه و 1 واحد دیگم ازش کم کنه و به لیست 2 ما اضافه کنه

چرا لازمه بعد از اینکه عدد اول ما از عدد قبلی کم شد دوباره یه واحد دیگم ازش کم بشه ؟

به این مثا ل ها نگاه کنید


فاصله بین 5 و 7 -- 2 واحده ولی 1 عدد بین اونها قرار میگیره یعنی 1 واحد کمتر از واحد بینشون

(در اصل ما تعیین میکنیم چند عد بین 2 تا عدد قرار گرفته نه فاصله بین اونها رو)

|------|------|
5------|------7


در این جا هم به همون صورت - فاصله بین اعداد 4 هست ولی اعداد بینشون 3



|------|------|------|------|
7------8------9------10------11



اینم یکی دیگه - فاصله 6 اعداد بین 5


|------|------|------|------|------|------|
23----24----25----26----27----28----29

اگه متوجه نشدین بگین کجاش توضیح بدم