DCSIMG
Mathematics - גרי רשף

Browse by Tags

All Tags » Mathematics (RSS)
הנפה של ארסטותנס היא אלגוריתם למציאת כל המספרים הראשוניים מ-2 ועד לערך שנקבע מראש: 2 הוא הראשוני הראשון ולכן נמחק את כל המספרים שמתחלקים ב-2 המספר הכי קטן מעל 2 הוא ,3 מכאן שהוא ראשוני, ולכן נמחק את כל המספרים שמתלקים ב-3 המספר הכי קטן מעל 3 הוא 5 (4 כבר נמחק בתור כפולה של 2) ולכן נמחק את כל כפולותיו.. כך ממשיכים עם כל הרשימה, כשלמעשה מספיק להמשיך עד לשורש של הערך המקסימלי ברשימה.. נכין טבלת מספרים מאונדקסת מ-2 ועד 1,000,000: If Object_Id( 'T_Misparim' ) Is Not Null Drop Table T_Misparim;...
בפוסט זה הצעתי דרך לחישוב מספרים ראשוניים על ידי שליפה אחת (CTE רקורסיבי כפול – ליתר דיוק). כאן אני מציע דרך איטרטיבית שהיא יותר יעילה, כשהרעיון באופן כללי הוא כזה: כשבודקים אם מספר מסויים הוא ראשוני – יש לנסות ולחלק אותו בכל המספרים הראשוניים שהם קטנים או שווים לשורש הריבועי שלו (או בהיעדר טבלה של מספרים ראשוניים – וזה בדרך כלל המצב – מחלקים אותו בכל המספרים השלמים בין 2 לבין השורש הריבועי שלו). ההיגיון כאן הוא די ברור – אם מספר מתחלק במספר הגדול מהשורש שלו – התוצאה תהיה קטנה מהשורש שלו, ממילא הוא...
IRR = Internal Rate Of Return (ובעברית- שת"פ) הוא מדד מקובל לחישוב כדאיות פרוייקט. פרוייקט כלכלי טיפוסי מורכב מהשקעות גדולות בתחילת הדרך וזרם הכנסות בעתיד, ואנחנו מחפשים את שער הריבית התיאורטי הגלום בפרוייקט; כלומר- אם הפרוייקט לא היה אלא תוכנית חסכון בה מפקידים הרבה כסף בהתחלה ונהנים מהכנסות בהמשך – מה היה שער הריבית של אותה תוכנית חסכון שאינה אלא בת דמותו של הפרוייקט הנ"ל. טכנית הכוונה לאותו שער ריבית שעבורו הענ"נ (הערך הנוכחי הנקי, NPV = Net Present Value) הוא 0. משחישבנו את השת"פ...
אתגר מגדלי האנוי שמוכר לכל מי שעסק ברקורסיה במסגרת מבוא למדעי המחשב: משחק שהומצא במערב וניתן לו שם בעל נופך מזרח אסיאתי מסתורי ולצידו אגדה על נזירים המחשבים את קיצו של העולם לאחור בעוד 64^2 שניות.. באופן מעורר חשד זה מזכיר אגדה אחרת – מופרכת לא פחות – על האיש שהמציא את משחק השחמט וביקש תמורת המצאתו גרגר חיטה כנגד המשבצת הראשונה, 2 גרגרים כנגד השניה, 4 כנגד השלישית וכך הלאה – טור הנדסי של מכפלות של 2, ובמקרה זה מספר גרגרי החיטה הוא 64^2 שזה הרבה מעבר למה שיש + מה שהיה + מה שיהיה.. ולענייננו- נתחיל...
אתמול (ארבעה עשר במרץ ציינו את יום ה-π הבינלאומי . לרגל המאורע- שתי וריאציות למציאת שני השלמים שהמנה שלהם מהווה הקירוב הטוב ביותר ל-π (שהוא כידוע מספר לא רציונלי) מבין המספרים עד 1000. בשני המקרים מחלקים את כל אחד מהמספרים ב-π, מעגלים את התוצאה, ומחלקים את המספר מחדש – אך הפעם בעיגול הנ"ל, ולסיכום – מוצאים את ההפרש בערך מוחלט מ-π. השיטה הראשונה האלגנטית יותר- כל שורה מושווית לקודמת וגוררת את הפרמטרים שמחזירים את התוצאה היותר טובה מבין השתיים, ולבסוף רק השורה האחרונה מוצגת: Declare @N Int ; Set...
לא הכי שימושי, אבל אתגר נצחי לחובבי הז'אנר: Declare @N Int=1000; With T As (Select 1 Mispar Union All Select Mispar+1 From T Where Mispar<@N) Select T1.Mispar*T2.Mispar Mispar From T T1, T T2 Group By T1.Mispar*T2.Mispar Having Count(*)=2 And T1.Mispar*T2.Mispar<=@N Order By 1 option (MaxRecursion 0); במקרה זה מוכפלים המספרים 1..1000 אלו באלו, ונשלפות המכפלות שמופיעות רק פעמיים: אלו הם המספרים הראשונים שנוצרים רק ממכפלה ב-1. ודרך שונה: Declare @N Int=1000; With T As (Select 2 Mispar Union...
בדרך כלל יחס של רבים לרבים בין שתי טבלאות ממומש באמצעות טבלת עזר שמקשרת בין שתי הטבלאות, והמפתח הראשי שלה הוא צירוף המפתחות הראשיים של שתיהן. ניתן במקרה הצורך ליצור יחס של רבים לרבים ללא טבלת עזר. אינני יודע מתי זה טוב, אבל זה אפשרי ולהלן שתי דרכים. נניח שבעירנו יש מספר מוסדות תרבות, כל אחד פתוח בימים אחרים במהלך השבוע, ואנחנו מעוניינים להחזיק את המידע הזה. נקים קודם כל את טבלת ימי השבוע: Create Table #T_Yamim(Yom Int,Shem VarChar(Max)) Insert Into #T_Yamim Select 1,'א' Insert Into #T_Yamim...