פירוק מספר לגורמים ראשוניים

המשפט היסודי של האריתמטיקה אומר כי אפשר לפרק כל מספר טבעי (כלומר שלם חיובי) לגורמים ראשוניים, והפירוק הזה הוא יחיד. (סדר הגורמים אינו משנה)

למשל, את המספר 40 ניתן לפרק לגורמים הראשוניים הבאים: 2 * 2 * 2 * 5 = 2³ * 5¹ = 40.

המספרים 2 ו-5 הם מספרים ראשוניים. (כזכור, מספר ראשוני הוא מספר שמתחלק רק ב-1 ובעצמו ללא שארית).

אך חלק מהמספרים הם מכפלה של שני מספרים ראשוניים בלבד.

לדוגמה,

  • המספר 35 הוא מכפלה של 5 ו-7.
  • המספר 493 הוא מכפלה של 17 ו-29.
  • המספר 8509 הוא מכפלה של 67 ו-127.

נתונה השיטה הבוליאנית הבאה (אין צורך לממש אותה):

isHighFactorInRange המקבלת מספר טבעי n ו-2 מספרים low ו-high אשר מייצגים שני קצוות של טווח חיפוש. ו- n הוא מכפלה של בדיוק שני מספרים ראשוניים p ו-q. השיטה בודקת האם הגורם הראשוני הגדול מבין p, q נמצא בטווח החיפוש. אם כן היא מחזירה true, אחרת היא מחזירה false (טווח החיפוש כולל את הקצוות).

לדוגמה, המספר 8509 הוא מכפלה של 67 ו-127. לכן, אם תופעל השיטה isHighFactorInRange עם המספר n = 8509 וטווח החיפוש low = 1, high = 100 השיטה תחזיר false כיוון שהגורם הראשוני הגדול יותר מבין 67 ו-127 הוא 127, והוא לא נמצא בטווח בין 1 ל-100. ואילו עבור הטווח low = 1, high = 200 השיטה הייתה מחזירה true, כי 127 הוא בין 1 ל-200.

בהינתן מספר שלם חיובי n שהוא מכפלה של בדיוק שני מספרים ראשוניים p ו-q. יש למצוא ולהדפיס את p ו-q.

לדוגמה, עבור n=8509 השיטה תדפיס 67 ו-127 מאחר ו 67*127=8509.

השיטה צריכה להיות יעילה ככל הניתן, גם מבחינת סיבוכיות הזמן וגם מבחינת סיבוכיות המקום.

אילוצים:

כדאי מאוד להשתמש בשיטה isHighFactorInRange שנתונה.

דוגמה 1:
קלט:
n = 8509
פלט:
67 127

הסבר: המספר 8509 הוא מכפלה של 67 ו-127.

דוגמה 2:
קלט:
n = 35
פלט:
5 7

הסבר: המספר 35 הוא מכפלה של 5 ו-7.

דוגמה 3:
קלט:
n = 493
פלט:
17 29

הסבר: המספר 493 הוא מכפלה של 17 ו-29.

דוגמה 4:
קלט:
n = 77
פלט:
7 11

הסבר: המספר 77 הוא מכפלה של 7 ו-11.

דוגמה 5:
קלט:
n = 221
פלט:
13 17

הסבר: המספר 221 הוא מכפלה של 13 ו-17.

דוגמה 6:
קלט:
n = 299
פלט:
13 23

הסבר: המספר 299 הוא מכפלה של 13 ו-23.

דוגמה 7:
קלט:
n = 391
פלט:
17 23

הסבר: המספר 391 הוא מכפלה של 17 ו-23.

דוגמה 8:
קלט:
n = 899
פלט:
29 31

הסבר: המספר 899 הוא מכפלה של 29 ו-31.

Loading...
נשמרLn 1, Col 1

קלט:

n = 8509

הפלט המבוקש:

67 127