אהלן, יישמתי אלגוריתם לפירוק מספר שלם לגורמים ראשוניים. האלגוריתם מקבל מספר שלם גדול מ-1 ומחזיר רשימה של כל הגורמים הראשוניים לפי הסדר וכמספר הפעמים שהם מופיעים במכפלה.
בדקתי את האלגוריתם על דוגמות שונות וכפי הנראה הוא נכון (לא הוכחתי מתמטית את נכונות האלגוריתם). טקסט מודגשהתכנית רצה באייפון שלי על אפליקציית פייתון כלשהי, ולא על סביבת העבודה שלנוטקסט מודגש.
הבעיה היא שעבור מספרים מאוד מאוד מאוד גדולים (לפחות כאלה שהם חזקות של 10), הוא מחזיר תשובה שגויה. יותר מזה, עבור חלק מחזקות ה-10 האלגוריתם רץ יותר מדי ואני מקבל הודעת שגיאה שחוקח לתכנית לרוץ יותר מדי זמן, וכשאני מוסיף עוד 0 למספר (כלומר מגדיל פי 10 את הפרמטר עליו פועלת הפונקציה) פתאום הפונקציה כן עוצרת, אבל עם תוצאות לא נכונות.
אסור להעלות לפה את המימוש האישי שלי, רק אציין שלמרות שעדיין אין אלגוריתם יעיל על מחשב קלאסי לפירוק לגורמים, האלגוריתם אמור להתמודד בהצלחה גם עם מספרים עצומים בהנחה שהם חזקות של 10.
נכון היה אמור להשתמש בגנרטור, אבל לא השתמשתי, רציתי לפתור לעצמי קודם ללא שימוש בזה.
האלגוריתם שמימשתי יחסית יעיל (לא עובר על כל המספרים).
orpazf
חשבתי שאולי זה נובע מבעיות של ייצוג מספרים גדולים אבל אני לדעתי זו לא הסיבה.
באופן כללי אין הכרח לשמור את המספרים ברשימה ויהיה כנראה יותר יעיל להדפיס גורם בכל פעם אתה מוצא
לייק 1
yonae
אני מניח באמת שזה קשור לגלישה של הערכים במשתנה… אלא שכאשר ניסיתי לשמור מספרים יותר גדולים של חזקות של 10 במשתנה ולהדפיס את ערך המשתנה, אז ערכו הודפס בהצלחה. בגלל זה אני לא מבין…
orpazf
אם אתה רוצה לשלוח לי את הקוד בפרטי אני אעיף מבט ואולי אוכל לסייע יותר
לייק 1
yonae
תודה רבה, שלחתי לך את הקוד בפרטי
לייק 1
aviadamar
ניסיתי להריץ את שלי על האייפון
ונראה דווקא שהוא שורד ומחזיר תוצאות טובות…עד כמה גדולים המספרים שאתה מנסה להכניס ?