تجزیه ی یک عدد به اعداد اول
سلام دوستان
یه سوال دیدم برام جالب بود که حلش کنم، برنامه رو نوشتم که میتونید از لینک زیر دانلود کنید .
کاره برنامه اینه که عدد ورودی رو به اعداد اول تجزیه میکنه .
برنامه ای که نوشتم دوتا عیب داره ، یکی اینکه عدد یک رو تجزیه نمیکنه، طبیعیه البته اما میخواستم بدونم چطوری میشه رفعش کنم . و دوم اینکه یک علامت ضرب اضافه آخر عبارت تجزیه شده قرار میگیره .
ممنون میشم اگه دوستان توی حل دوتا مشکل بالا کمکم کنن
نقل قول: تجزیه ی یک عدد به اعداد اول
Private Sub Command1_Click()
Text1.Text = ""
Dim i, j, s, a, f As Double
a = Fix(Text2.Text)
If a > 1 Then
For i = 1 To a
s = 0
For j = 1 To i
If i Mod j = 0 Then
s = s + 1
End If
Next j
If s = 2 Then
f = 0
While ((a / i) = Int(a / i))
a = (a / i)
f = f + 1
Wend
If f <> 0 Then
Text1.Text = Text1.Text + Str(i) + "^" + Str(f) + Space(1) + "*" + Space(1)
End If
End If
Next i
Text1=Left(Text1,Len(Text1)-2)
Else
Text1=a
End If
End Sub
نقل قول: تجزیه ی یک عدد به اعداد اول
در مورد مشكل اول :
قبل از اينكه يك عدد رو تجزيه كني كنترل كن كه خودش عدد اول نباشه ، اگه عدد اوله با يك پيغام به كاربر اطلاع بده و برنامه رو تموم كن
خود عدد 1 هم در همين چك كردن جزو اعداد اول محسوب ميشه يعني مي توني در اولين if اگر عدد گرفته شده 1 بود برنامه تموم كني
در ضمن مثل اينكه مثال بيان شده در پست شماره 2 كلا اشكال داشته باشه
در اين مثال همين كه يك عددي 2 تا مقسوم عليه داشت شروع به كارهاي ديگه اي مي كنه و بقيه اعداد رو چك نميكنه
1 ضمیمه
نقل قول: تجزیه ی یک عدد به اعداد اول
سلام،
من یه برنامه نوشتم که تجزیه هم می کنه، اینم سورسش:
نقل قول: تجزیه ی یک عدد به اعداد اول
نقل قول:
نوشته شده توسط
a_mohammadi_m
در مورد مشكل اول :
مثل اينكه مثال بيان شده در پست شماره 2 كلا اشكال داشته باشه
در اين مثال همين كه يك عددي 2 تا مقسوم عليه داشت شروع به كارهاي ديگه اي مي كنه و بقيه اعداد رو چك نميكنه
سلام
شاید حق با شما باشه
من وقتی اون کد رو گذاشتم فرض کردم که کدی که دوستمون گذشته درسته و فقط همون دو تا مشکل رو داره رو همین حساب تو notepad بازش کردم دو تا تغییر دادم توش و گذاشتمش اینجا
اگه مشکلی بوده تو کد اصلی بوده
نقل قول: تجزیه ی یک عدد به اعداد اول
نقل قول:
نوشته شده توسط
a_mohammadi_m
در مورد مشكل اول :
قبل از اينكه يك عدد رو تجزيه كني كنترل كن كه خودش عدد اول نباشه ، اگه عدد اوله با يك پيغام به كاربر اطلاع بده و برنامه رو تموم كن
خود عدد 1 هم در همين چك كردن جزو اعداد اول محسوب ميشه يعني مي توني در اولين if اگر عدد گرفته شده 1 بود برنامه تموم كني
در ضمن مثل اينكه مثال بيان شده در پست شماره 2 كلا اشكال داشته باشه
در اين مثال همين كه يك عددي 2 تا مقسوم عليه داشت شروع به كارهاي ديگه اي مي كنه و بقيه اعداد رو چك نميكنه
ممنون از راهنماییتون دوست عزیز، اما عدد 1 اول نیست، بنابراین نباید به اعداد اول تجزیه بشه پس برنامه رو صحیح نوشته بودم، اما دلیل اینکه اون سوال رو پرسیده بودم این بودش که حین تست برنامه بیشتر روی تجزیه عدد تمرکز کرده بودم و نه اینکه تجزیه اون به عوامل اول که میشد خیلی راحت مسئله رو حل کرد،پس سوالم اشتباه بوده، بازم ممنون :)
نقل قول:
در ضمن مثل اينكه مثال بيان شده در پست شماره 2 كلا اشكال داشته باشه
در اين مثال همين كه يك عددي 2 تا مقسوم عليه داشت شروع به كارهاي ديگه اي مي كنه و بقيه اعداد رو چك نميكنه
نقل قول:
اگه مشکلی بوده تو کد اصلی بوده
نه دوست عزیز مشکلی تو کد اصلی نبود، تغییر اساسی که شما تو برنامه داده بودید این کد بود :
Else
Text1=a
جای نامناسبش باعث میشه شرط اولیه رو دیگه رعایت نکنه . اما خیلی ممنون بابت حذف علامت اضافه :)
فکر کنم دوستان برنامه رو مطالعه نکرده بودند، به این روش عمل کردم
1- عدد رو از کاربر میگیرم
2- عوامل اول رو تا اون عدد استخراج میکنم
3- بخش پذیری عدد رو نسبت به اعداد اول بدست اومده تا خوده اون عدد رو بررسی میکنم،
4- بعد از پیدا کردن اعداد اول دارای شرایط بالا، عدد رو تا وقتی که خارج قسمت تقسیم عدد به اعداد اول مرحله ی قبل ، صحیح باشه به عوامل اولش تجزیه میکنم
5- عوامل اولی که شامل حلقه بودن رو وارد خروجی میکنم به اضافه تعداد دفعاتی که عدد بر اون ها قابل تقسیم بوده ( به عنوان توان )
اینم کد نهایی بعد از اصلاح، تنها تغییرش حذف علامت توان اضافه بعد از رقم آخر هستش ( ممنون از دوست عزیز بابت کد )
text1 عدد رو از میگیره، text2 خروجی رو نشون میده و command1 هم عملیات رو .
Private Sub Command1_Click()
Text2.Text = ""
Dim i, j, s, a, f As Integer
If Text1.Text > 1 And Text1.Text <> "" Then
a = Fix(Text1.Text)
For i = 1 To a
s = 0
For j = 1 To i
If i Mod j = 0 Then
s = s + 1
End If
Next j
If s = 2 Then
f = 0
While ((a / i) = Int(a / i))
a = (a / i)
f = f + 1
Wend
If f <> 0 Then
Text2.Text = Text2.Text + Str(i) + "^" + Str(f) + Space(1) + "*" + Space(1)
End If
End If
Next i
Text2.Text = Left(Text2.Text, Len(Text2.Text) - 2)
End If
End Sub
که الگوریتم کلی همینه :
For i = 1 To a
s = 0
For j = 1 To i
If i Mod j = 0 Then
s = s + 1
End If
Next j
If s = 2 Then
f = 0
While ((a / i) = Int(a / i))
a = (a / i)
f = f + 1
Wend
If f <> 0 Then Print i & "^" & f
End If
Next i
و ممنون از جناب mahdi1373 بابت معرفی برنامشون :) روشی که استفاده کردید باعث شده برنامه شما خیلی سریعتر عمل کنه
نقل قول: تجزیه ی یک عدد به اعداد اول
تاریخ پست ها رو نگاه کن دوست عزیز
نقل قول: تجزیه ی یک عدد به اعداد اول
slmmishe code in barname ro bezarin inja? ?mamnOon
نقل قول: تجزیه ی یک عدد به اعداد اول
سلام امکانش هست این کدو به زبان جاوا اسکریپت بنویسید ممنون میشم
نقل قول: تجزیه ی یک عدد به اعداد اول
نقل قول:
نوشته شده توسط
زیبااا
سلام امکانش هست این کدو به زبان جاوا اسکریپت بنویسید ممنون میشم
اگر بخواهید میتوانم برایتان بنویسم فقط پیام خصوصی بدهید تا سریع برایتان ارسال کنم
نقل قول: تجزیه ی یک عدد به اعداد اول
سلام
وقت بخیر
امکان داره کد در قالب smallbasic نوشته بشه
نقل قول: تجزیه ی یک عدد به اعداد اول
سلام
لینکایی که دادید دانلود نمیشن:افسرده:
چیکار کنم
عجله دارم
نقل قول: تجزیه ی یک عدد به اعداد اول
منم میخوام برای منم بفرستین
نقل قول:
نوشته شده توسط
www.pc3enter.tk
اگر بخواهید میتوانم برایتان بنویسم فقط پیام خصوصی بدهید تا سریع برایتان ارسال کنم