در این مطلب، ویدئو Ugly Number – Leetcode 263 – Python با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:11:34
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,000 –> 00:00:02,879
این ویدیو توسط educative.io حمایت
2
00:00:02,879 –> 00:00:05,120
می شود، به
3
00:00:05,120 –> 00:00:07,759
educative.io neatcode بروید تا 10 در اشتراک خود صرفه جویی کنید
4
00:00:07,759 –> 00:00:09,679
سلام همه خوش آمدید و بیایید
5
00:00:09,679 –> 00:00:11,840
امروز یک کد دقیق تر بنویسیم، بنابراین امروز
6
00:00:11,840 –> 00:00:14,559
بیایید این مشکل را حل کنیم که عدد زشت به
7
00:00:14,559 –> 00:00:16,640
ما یک عدد صحیح n داده شده است و ما
8
00:00:16,640 –> 00:00:19,680
اگر n عدد زشتی است می خواهید درست را برگردانید و
9
00:00:19,680 –> 00:00:21,439
اگر عدد زشتی نباشد
10
00:00:21,439 –> 00:00:23,840
غلط را برمی گردانیم که دقیقا عدد زشت
11
00:00:23,840 –> 00:00:27,119
چیست خوب این یک عدد صحیح مثبت است که
12
00:00:27,119 –> 00:00:30,720
فاکتورهای اول آن به 2 و سه و پنج محدود می شود
13
00:00:30,720 –> 00:00:33,280
بنابراین می گویند عامل اول به طوری که ما هستیم
14
00:00:33,280 –> 00:00:34,559
باید کمی
15
00:00:34,559 –> 00:00:36,480
پیش زمینه ریاضی برای این مشکل بدانم و
16
00:00:36,480 –> 00:00:38,160
فکر میکنم احتمالاً اگر
17
00:00:38,160 –> 00:00:39,680
با این مشکل دست و پنجه نرم میکنید به همین دلیل است
18
00:00:39,680 –> 00:00:41,680
که احتمالاً ریاضیات مورد نیاز
19
00:00:41,680 –> 00:00:43,760
برای این مسئله را فراموش کردهاید، بنابراین من به شما یک
20
00:00:43,760 –> 00:00:45,840
تجدید نظر سریع در مورد آن میدهم و سپس هنگامی
21
00:00:45,840 –> 00:00:48,160
که حل مسئله را انجام دادیم در واقع
22
00:00:48,160 –> 00:00:50,079
بسیار ساده است، کد ساده است، فقط به
23
00:00:50,079 –> 00:00:52,399
نوعی درک ریاضی پشت
24
00:00:52,399 –> 00:00:54,719
آن کاری است که باید انجام دهیم اول از همه
25
00:00:54,719 –> 00:00:56,399
اعداد اول چیست اعداد اول اعدادی هستند.
26
00:00:56,399 –> 00:00:59,039
به عنوان دو سه یا پنج که
27
00:00:59,039 –> 00:01:00,960
در آن فاکتورهای این اعداد
28
00:01:00,960 –> 00:01:02,719
مثلاً فاکتورهای پنج کدامند
29
00:01:02,719 –> 00:01:05,519
عوامل یک و پنج درست است یا خود شما می
30
00:01:05,519 –> 00:01:08,640
دانید یا مقدار یک هر عددی
31
00:01:08,640 –> 00:01:11,119
که عواملی دارد که فقط خودش هستند و
32
00:01:11,119 –> 00:01:13,600
یک معنی اساساً به این معنی است که این
33
00:01:13,600 –> 00:01:16,799
عدد یک عدد اول است حالا چه در مورد
34
00:01:16,799 –> 00:01:19,600
یک خود یک عدد اول است بنا به
35
00:01:19,600 –> 00:01:22,159
تعریف هیچ کس عدد اول
36
00:01:22,159 –> 00:01:25,200
نیست پس اینها اعداد اول هستند شش
37
00:01:25,200 –> 00:01:26,880
عدد اول نیستند زیرا چند
38
00:01:26,880 –> 00:01:29,680
عامل دو دارد و سه را راست ضرب کنید دو
39
00:01:29,680 –> 00:01:31,840
و سه با هم شش را به دست می آوریم
40
00:01:31,840 –> 00:01:36,079
بنابراین شش عدد اول نیست اما
41
00:01:36,079 –> 00:01:38,799
شش عدد زشتی است همانطور که در
42
00:01:38,799 –> 00:01:40,720
سمت چپ می بینید اگر n برابر با شش به دست آوریم درست برمی گردیم
43
00:01:40,720 –> 00:01:44,360
زیرا وقتی
44
00:01:44,360 –> 00:01:47,920
فاکتورسازی اول این عدد شش را انجام می دهیم این دو را بدست می آوریم.
45
00:01:47,920 –> 00:01:50,640
اعداد دو و سه درست
46
00:01:50,640 –> 00:01:54,159
دیگر نمیتوانیم دو را به درستی تقسیم کنیم و
47
00:01:54,159 –> 00:01:56,479
منطقی است که چرا دیگر نمیتوانیم دو را بشکنیم
48
00:01:56,479 –> 00:01:58,960
زیرا این یک عدد اول
49
00:01:58,960 –> 00:02:00,399
درست است که تقریباً به ما گفته شده است که
50
00:02:00,399 –> 00:02:02,240
میتوانیم آن را به یک و دو تقسیم کنیم و
51
00:02:02,240 –> 00:02:04,159
سپس اگر واقعاً بخواهیم میتوانیم این کار را برای همیشه انجام دهیم،
52
00:02:04,159 –> 00:02:06,240
اما به
53
00:02:06,240 –> 00:02:08,560
جایی نمیرسیم، زیرا 2 هیچ
54
00:02:08,560 –> 00:02:11,680
عاملی ندارد که اعداد اول نباشد، بنابراین دیگر
55
00:02:11,680 –> 00:02:14,640
نمیتوان آن را به طور مشابه
56
00:02:14,640 –> 00:02:16,080
با سه سمت راست تقسیم کرد، میتوانیم آن را
57
00:02:16,080 –> 00:02:18,080
به سه تقسیم کنیم. و یک و این تمام کاری است که میتوانیم
58
00:02:18,080 –> 00:02:20,560
انجام دهیم، زیرا این نیز یک عدد اول است،
59
00:02:20,560 –> 00:02:22,560
بنابراین میتوانیم ببینیم که کل این ایده
60
00:02:22,560 –> 00:02:25,040
فاکتورسازی اول قطعاً
61
00:02:25,040 –> 00:02:27,120
در تعیین اینکه آیا یک
62
00:02:27,120 –> 00:02:29,840
عدد زشت است یا نه، مفید خواهد بود، اجازه دهید ادامه دهیم، بنابراین بیایید
63
00:02:29,840 –> 00:02:32,319
مثال 20 دیگری را در نظر بگیریم. بیایید سعی کنیم
64
00:02:32,319 –> 00:02:34,800
این عدد را فاکتور اول کنیم اوه می دانید که
65
00:02:34,800 –> 00:02:38,400
ما می توانیم دو و ده را درست در نظر
66
00:02:38,400 –> 00:02:41,280
بگیریم، بنابراین اکنون چند فاکتور را به دست آورده ایم، اگر
67
00:02:41,280 –> 00:02:43,840
این دو را ضرب کنیم درست به
68
00:02:43,840 –> 00:02:45,920
عدد 20 می رسیم، بنابراین اینها فاکتورهای 20 هستند. ما نمی توانیم آن را بشکنیم.
69
00:02:45,920 –> 00:02:48,560
دو را دیگر درست پایین بیاور، اما در مورد 10
70
00:02:48,560 –> 00:02:51,280
این را می توان به دو تقسیم کرد و
71
00:02:51,280 –> 00:02:54,480
پنج را درست این پنج را نمی توان تقسیم
72
00:02:54,480 –> 00:02:56,239
کرد، نه این دو را می تواند نه
73
00:02:56,239 –> 00:02:58,560
این دو را، بنابراین دیدیم که بله،
74
00:02:58,560 –> 00:03:00,720
این عدد را شکستیم و آن را
75
00:03:00,720 –> 00:03:03,519
به دو تقسیم کردیم. دو و پنج و اینها همه
76
00:03:03,519 –> 00:03:05,440
با در این فاکتورها که ما مجاز
77
00:03:05,440 –> 00:03:07,760
به درستی آن هستیم، بنابراین 20 بله یک عدد زشت است،
78
00:03:07,760 –> 00:03:11,280
بیایید مثال 14 متقابل را در نظر بگیریم.
79
00:03:11,280 –> 00:03:13,599
اگر سعی کنیم این را تجزیه کنیم، می توانیم
80
00:03:13,599 –> 00:03:17,200
2 و 7 درست را بدست آوریم. 2 نمی تواند بیشتر
81
00:03:17,200 –> 00:03:19,200
شکسته شود، یک عدد اول می تواند هفت باشد.
82
00:03:19,200 –> 00:03:22,720
بیشتر شکسته شود، آن نیز یک عدد اول است،
83
00:03:22,720 –> 00:03:24,560
اما این یک عدد اول است
84
00:03:24,560 –> 00:03:26,720
که در بین سه موردی است که به ما اجازه داده شده
85
00:03:26,720 –> 00:03:29,040
نیست، بنابراین نمی توان آن را بیشتر تقسیم
86
00:03:29,040 –> 00:03:32,080
کرد، بنابراین در این مورد، ما false را برمی گردانیم تا
87
00:03:32,080 –> 00:03:33,920
حالا که به یاد داشته باشیم چه عوامل اولی را به یاد می آوریم.
88
00:03:33,920 –> 00:03:36,560
هستند و معنی آنها برای
89
00:03:36,560 –> 00:03:38,720
اعداد و آنچه ما در تلاش هستیم انجام
90
00:03:38,720 –> 00:03:40,799
دهیم، بیایید ببینیم چگونه می توانیم این کار
91
00:03:40,799 –> 00:03:42,879
را به صورت الگوریتمی انجام دهیم اگر
92
00:03:42,879 –> 00:03:46,560
عدد 20 به ما داده شود، می دانیم که
93
00:03:46,560 –> 00:03:49,280
می تواند فاکتورهایی داشته باشد که سه
94
00:03:49,280 –> 00:03:51,440
هستند که هر یک از اینها هستند. اعداد اول
95
00:03:51,440 –> 00:03:53,840
درست است و اگر ضریبی داشته باشد
96
00:03:53,840 –> 00:03:55,920
که درون آن یکی از این اعداد است، به
97
00:03:55,920 –> 00:03:59,680
این معنی است که میتوانیم 20 را بر
98
00:03:59,680 –> 00:04:02,239
ضرایب اول آن تقسیم کنیم، بیایید سعی کنیم
99
00:04:02,239 –> 00:04:06,159
آن را به تعداد دفعاتی که میتوانیم بر 2 تقسیم کنیم درست است
100
00:04:06,159 –> 00:04:09,040
که اول 20 است. همه بر 2 بخش پذیرند بله
101
00:04:09,040 –> 00:04:11,519
همینطور است از کجا بفهمیم که بر 2 بخش پذیر است
102
00:04:11,519 –> 00:04:14,239
زیرا اگر آن را بر 2 تغییر دهیم، به این معنی است
103
00:04:14,239 –> 00:04:16,720
که این را تقسیم می کنیم و اگر آن را بر 2 تقسیم می کنیم، باقیمانده
104
00:04:16,720 –> 00:04:19,040
را می گیریم، اگر آن را بر 2 تقسیم می کنیم
105
00:04:19,040 –> 00:04:21,040
و باقیمانده را می گیریم چه مقدار
106
00:04:21,040 –> 00:04:25,040
باقی مانده است، باقیمانده 0 می شود زیرا 2 درست در
107
00:04:25,040 –> 00:04:27,680
20 قرار می گیرد. پس این بدان معناست که بر دو بخش پذیر است،
108
00:04:27,680 –> 00:04:29,520
پس بیایید آن را بر دو تقسیم کنیم، اگر آن را
109
00:04:29,520 –> 00:04:32,400
بر دو تقسیم کنیم، ده به دست می آوریم، همین کار را انجام دهیم
110
00:04:32,400 –> 00:04:34,400
با ده ده نیز
111
00:04:34,400 –> 00:04:36,080
بر دو بخش پذیر است، می توانیم آن را
112
00:04:36,080 –> 00:04:38,240
به راحتی با اصلاح آن بر دو بررسی کنیم، اما می دانیم که
113
00:04:38,240 –> 00:04:40,400
این کار را انجام نمی دهیم. لازم نیست این کار را انجام دهیم، پس بیایید همین
114
00:04:40,400 –> 00:04:42,800
الان آن را بر دو تقسیم کنیم،
115
00:04:42,800 –> 00:04:46,080
پنج خوب است، پنج خوب بر دو بخش پذیر است، این به
116
00:04:46,080 –> 00:04:48,240
این دلیل نیست که اگر آن را بر دو تغییر
117
00:04:48,240 –> 00:04:50,400
دهیم، باقیمانده یک را دریافت می کنیم، بنابراین
118
00:04:50,400 –> 00:04:52,800
بر دو بخش پذیر نیست، پس این کار را نکنید. آن را بر دو تقسیم کنید،
119
00:04:52,800 –> 00:04:55,040
خوب در الگوریتم ما، کاری که اکنون
120
00:04:55,040 –> 00:04:56,720
انجام میدهیم این است که بررسی کنیم سه درست بر سه بخش
121
00:04:56,720 –> 00:04:59,360
پذیر است و سپس اگر
122
00:04:59,360 –> 00:05:01,440
به سه تقسیم شود، ادامه دهیم تا زمانی
123
00:05:01,440 –> 00:05:03,199
که دیگر بر سه بخشپذیر نباشد، اما در این
124
00:05:03,199 –> 00:05:04,720
مورد میتوانیم ببینیم که
125
00:05:04,720 –> 00:05:07,440
باقیمانده دو دارد پس صفر نیست
126
00:05:07,440 –> 00:05:09,520
پس ما نمی توانیم تقسیمش بر سه حالا در
127
00:05:09,520 –> 00:05:13,039
آخر کاری که انجام می دهیم این است که پنج را برداریم و بررسی کنیم که آیا
128
00:05:13,039 –> 00:05:16,560
این بر پنج بخش پذیر است بله
129
00:05:16,560 –> 00:05:18,800
این به چه معناست که برای ما قابل
130
00:05:18,800 –> 00:05:20,639
131
00:05:20,639 –> 00:05:22,800
132
00:05:22,800 –> 00:05:27,120
تقسیم بر پنج است. یک مقدار را به درستی دریافت کنید و
133
00:05:27,120 –> 00:05:29,759
اکنون اگر سعی کنیم هر یک از این فاکتورهای اصلی را اجرا
134
00:05:29,759 –> 00:05:31,840
کنیم و بررسی کنیم که آیا یکی
135
00:05:31,840 –> 00:05:33,280
بر آنها
136
00:05:33,280 –> 00:05:35,600
تقسیم می شود یا خیر، یک حق نادرست دریافت می کنیم تا دیگر نتوانیم یکی
137
00:05:35,600 –> 00:05:38,000
از آنها را به این سه تقسیم کنیم.
138
00:05:38,000 –> 00:05:40,720
حالا ما به مقدار یک رسیده ایم
139
00:05:40,720 –> 00:05:43,280
که چه چیزی به ما می گوید آیا این به این
140
00:05:43,280 –> 00:05:45,759
معنی است که بله این یک عدد است، یک عدد زشت است
141
00:05:45,759 –> 00:05:47,759
یا آیا این به معنای اشتباه است نه این
142
00:05:47,759 –> 00:05:49,600
یک عدد زشت نیست خوب به یاد داشته باشید
143
00:05:49,600 –> 00:05:51,680
که در ابتدا چه کار کردم درست من 20 را گرفتم و
144
00:05:51,680 –> 00:05:53,759
سپس آن را