עבור לתוכן

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

Featured Replies

פורסם

אני צריך לבנות תוכנה שיודעת לזהות אם המספר הוא ראשוני או לא בריקורסיה

בניתי תוכנית אבל מספרים שמעל 5000 התוכנה מחזירה פלט ריק

#include <stdio.h>

int chek(int x ,int y)

{

if (y==1)

return 0;

if(x%y==0)

return 1;

chek(x,y-1);

}

void main()

{

int x,y,z;

x=10;

y=x-1;

z=chek(x,y);

if(z==1)

printf("no\n");

if(z==0)

printf("yes\n");

}

פורסם

שלום!

קודם כל, תערוך בבקשה את ההודעה שלך, ושים את הקוד בתוך טג קוד (כפתור '#' ליד הכפתור של הציטוט), ככה שיהיה יותר קריא.

חוץ מזה, שתי הערות:

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

חוץ מזה, יש הגבלה על העומק של הרקורסיה, וייתכן בהחלט ש-5000 עובר את הגבול הזה.

פורסם

למה לבנות את זה רקורסיבית?

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

פורסם

^^^

כנראה כי זה תרגיל בבית ספר ואמרו להם לבנות את זה בצורה רקורסיבית...

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

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים