
11-11-2006, 04:10
|
 |
|
|
חבר מתאריך: 15.08.06
הודעות: 465
|
|
ציטוט:
|
במקור נכתב על ידי לירונה
שלום לכולם,
מחפשת עזרה ממישהו שירד לעומק העניין בלולאות,
1. פונקציה שבודקת אם מס' הוא ראשוני ע"י שימוש בספריית STDIO בלבד...?
2. פונקציה שבודקת האם ספרותיו של מספר הן בסדר עולה?....
3. תוכנית שמחזירה את המחלקים הראשוניים של מספר?
אשמח לקבל אפילו הכוונה או הסברים לפיתרון.
תודה (-:
|
באמת שאני לא יודע איך אפשר לתת הכוונה לתוכניות כל כך בסיסיות, זה בסה"כ לבדוק נכונות לפי הגדרה :/ אז אני אכתוב את התוכניות עם הסבר.
1.
קוד PHP:
int prime(int n){ for (int i=2;i<n-1;++i) //בדיקה האם קיים מחלק if (n%i == 0) //i מחלק.. return 0; //נחזיר 0, כי n לא ראשוני, ובזאת גם נצא מהפונקציה return 1; //הלולאה הסתיימה, כלומר n ראשוני, נחזיר 1 }
2.
קוד PHP:
int Myfunction(int n){ while (n){ //בגוף הלולאה נחלק בכל ריצה את n ב10 על מנת "לקצץ" את ספרת האחדות, בשבל, אחרי מספר ריצות כמספר הספרות, שזה המספר שאנחנו צריכים, n יהיה שווה 0 ונצא מהלולאה if (n%10 < (n/10)%10) return 0; //אם ספרת האחדות קטנה מספרת העשרות, הספרות אינן בסדר עולה. נחזיר 0 n/=10; //"נקצץ" את ספרת האחדות }return 1; //הלולאה הסתיימה, לכן המספר בסדר עולה, נחזיר 1 }
3.
אוקיי, פה אני מניח שהמורה שלך או וואטאבר רוצים שתשתמשי בפונקציה מסעיף 1, מה שיהיה לא יעיל במיוחד, אבל נו טוב, אם את רוצה משהו יעיל אני אהיה חייב לערב קצת תורת המספרים, ולסבך אותך, אם זה מה שאת רוצה..תגידי, אז בצורה הכי בסיסית ולא יעילה, הנה פונקציה קצרה עם הסבר.
קוד PHP:
int fact(int n){ int current=1; //משתנה שיכיל את מכפלת הגורמים שנמצאים בכל ריצה של לולאת הפור. זה נחוץ בגלל שיתכנו גורמים שמופיעים מספר פעמים while (n!=1) //בכל פעם שיימצא גורם נחלק את n באותו גורם, או יותר נכון נחלק במכפלת גורמים שאינם בהכרח כל הגורמים בכל ריצה של לולאה הפור, n יהיה שווה 1 לאחר חילוק בכל גורמיו הראשוניים שהרי מכפלתם שווה n, ועד אז נרוץ { for (int i=2;i<=n;i++) { if ((prime(i)) && (!(n%i))) //אם i ראשוני וגם מחלק את n { printf("%3d", i); //נדפיס את i שהרי הוא גורם ראשוני current=current*i; //נכפיל את current ב i כדי שנוכל אחרי זה לחלק את n בו, זה יקרה רק במידה שקיים גורם שמופיע יותר מפעם אחת... } } n/=current; //נחלק את n במכפלת הראשוניים שמצאנו, אם זה כל הגורמים, הלולאה תסתיים current=1; //נאתחל את current בשביל הריצה הבאה } return 0; }
prime
זאת הפונקציה מסעיף 1 כמובן.
_____________________________________
Any sufficiently advanced bug is indistinguishable from a feature
|