מספרים ראשוניים

blueeye

New member
מספרים ראשוניים

כתבתי תוכני שתמצא אם מספר הוא ראשוני או לא התוכנית לוקחת מספר ומחלקת בכל המספרים מ 2 ועד לאותו מספר ואז מכפילה את המספר שיצא במספר שבו חילקנו היות והתוכנית משתמשת במספרים שלמים בלבד אזי : 11/2 = 5 ולא 5.5 ואז 5*2=10 ואני בודק האם המספר שיצא לי (10) שווה למספר המקורי (11) אם כן המספר אינו ראשוני ! כי הוא מתחלק ללא שארית ואם לא נבדוק הלאה עד הסוף את כל המספרים ואם באף אחד הוא לא התחלק ללא שארית אז הוא ראשוני השאלה שלי היא : האם 17- הוא מספר ראשוני למשל ? בתוכנית שלי כל המספרים השלילים יוצאים לא ראשוניים
 

1ca1

New member
מספר ראשוני

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

freedom rider

New member
../images/Emo31.gif../images/Emo31.gif../images/Emo31.gif

זה כבר עלה פה לפני כמה שבועות: מספר ראשוני הוא מספר טבעי שיש לו בדיוק שני מחלקים טבעיים שונים. 2 ראשוני, כי יש לו בדיוק שני מחלקים טבעיים: 1 ו-2. 4 לא ראשוני, כי יש לו 3 מחלקים טבעיים שונים: 1, 2 ו-4. 1 לא ראשוני כי יש לו רק מחלק טבעי אחד: 1.
 

blueeye

New member
מה זה יש ?! מה ההגדרה ??

זה נורא חשוב לי לדעת האם המספרים השלילים הם גם ראשוניים עבור אותו מספר חיובי האם העובדה ש 11 ראשוני אזי 11- גם מספר ראשוני ?
 
שאלה לתוכנית:

מה פירוש "כל המספרים מ-2 ועד לאותו מספר", כאשר המספר הוא שלילי? באיזו שפה התוכנית? הערה נוספת (אתיחס למספרים חיוביים בלבד): אפשר להפסיק את לולאת הבדיקה כאשר ריבוע המספר הרץ גדול מ"אותו מספר".
 

Fingertip

New member
זה באמת מאוד תלוי במימוש...

אם המימוש היה בלולאת for של פסקל, אז כל המספרים השליליים היו צריכים לצאת ראשוניים. אם המימוש היה בלולאת while של פסקל עם התנאי x <> i, אז אכן כל המספרים השליליים צריכים לצאת פריקים. ב-C, מכיוון שגם לולאת for היא כמו while, תנאי הלולאה חשוב, לכן אני חושב שהשתמשת בלולאת while (או דומה לה...) עם התנאי <> (או =!...) בכל מקרה, מה שקורה הוא זה: האלגוריתם מתחיל עם 2, ואז מתקדם ל-3, ל-4, וכך הלאה. מכיוון שעבור כל מספר חיובי התנאי x != i מתקיים, הרי שבאיזהשו שלב, נגיע ל-i = -x. כאן מתקיים: x/-x = -1 ואכן(x = -x*(-1 ולכן התנאי שלך מתקיים, והאלגוריתם יעצר ויאמר שהמספר פריק. אם אתה רוצה לתקן את המצב, אתה יכול להחליף את התנאי בלולאה ל-i<x או משהו כזה. דרך אגב, למה הסתבכת עם כזו שיטה? כשהמחשב מבצע חילוק בשלמים, הוא גם מבצע מודולו (עד כמה שאני יודע...) ולכן למצוא שארית מסובך באותה מידה כמו לחלק. אני חושב. מקווה שעזרתי. אהד.
 
למעלה