ABA


"לכל מי שפותר חידות ב-project euler בזמנו החופשי, אני צריך עזרה:)"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #20347 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 20347
last_test
חבר מתאריך 20.8.13
328 הודעות
   19:11   16.11.13   
אל הפורום  
  לכל מי שפותר חידות ב-project euler בזמנו החופשי, אני צריך עזרה:)  
 
   http://projecteuler.net/problem=12

כתבתי אלגוריתם יחסית סביר אבל עדיין לא מצליח להגיע לתוצאה הרצויה מבלי שהוא ייחנק באמצע, מה האלגוריתם האופטימלי כדי להוציא את מספר המחלקים של n?

אני רץ עד sqrt(n) ככה שדי צמצמתי את כמות הריצות, אולי גם לסמן מספרים ראשוניים ולדלג עליהם?


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  תנסה אולי ללכת הפוך ולחפש דווקא את אלה שלא מחלקים TheKid 16.11.13 20:12 1
  דרך אגב מאיזה מספר אתה מתחיל להריץ את הלולאה החיצונית? TheKid 16.11.13 20:42 2
  יש הרבה שיטות לעשות את זה Net_Boy  19.11.13 11:51 3
     פשוט רצים עד השורש inno3D 19.11.13 11:58 4
  בעיה של factorization היא בעיה קשה. Deuce  19.11.13 21:39 5

       
TheKid לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.10.07
17978 הודעות, 1 פידבק
   20:12   16.11.13   
אל הפורום  
  1. תנסה אולי ללכת הפוך ולחפש דווקא את אלה שלא מחלקים  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
TheKid לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 5.10.07
17978 הודעות, 1 פידבק
   20:42   16.11.13   
אל הפורום  
  2. דרך אגב מאיזה מספר אתה מתחיל להריץ את הלולאה החיצונית?  
בתגובה להודעה מספר 0
 
   למשל אם אתה מחפש את המספר הראשון שמתחלק ב500 מספרים אז אין טעם שתתחיל מ500...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק
   11:51   19.11.13   
אל הפורום  
  3. יש הרבה שיטות לעשות את זה  
בתגובה להודעה מספר 0
 
   לדעתי השיטה הפשוטה ביותר זה לעבוד בזוגות.
תגביל בצורה דינאמית כל פעם את הגבול של הלולאה שלך.

לדוגמא במספר 48 :

אתה רץ מ1 עד 48.
מגלה שזה מתחלק, מקדם את המונה של המחלקים ב-2, שם את הגבול של הלולאה שיהיה שווה ל 48:1 = 48

עובר ל-2.
מגלה שזה מתחלק, מקדם את המונה של המחלקים ב-2, שם את הגבול של הלולאה שיהיה שווה ל 48:2 = 24

ההיגיון אומר שאין לך מה לרוץ בין 24 ל-48.
וכך הלאה...

בדוגמא הזאת, אתה תרוץ עד 8 במקום 48.



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   11:58   19.11.13   
אל הפורום  
  4. פשוט רצים עד השורש  
בתגובה להודעה מספר 3
 
   כלומר רצים עד 6..
אין טעם להגיע ל 8


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   21:39   19.11.13   
אל הפורום  
  5. בעיה של factorization היא בעיה קשה.  
בתגובה להודעה מספר 0
 
על פניו אתה אמור לקבל תשובה מהאלגוריתם שלך. אתה מקבל את המחלקים בזמן של sqrt(n) שזה בסדר. יש דרכים שאפשר לייעל את האלגוריתם שלך, אבל יכול להיות שאתה טועה בלולאה החיצונית? אתה כל פעם מוסיף לסכום את המספר הקודם ומחשב מחלקים? זה אמור להחזיר תשובה לכל היותר תוך כמה דקות.






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net