כותב |
|
moz@rt משתמש מתחיל
הצטרף / הצטרפה: 29 April 2009
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 29 April 2009 בשעה 14:53 | | IP רשוּם
|
|
|
|
שלום אני מנסה לתכנת בשפת JAVA , לצורך בדיקותי אני זקוק לאפשרות בחינת מספרים גדולים למדי , איני יכול איני יכול להסתפק במספרים כגון 2^63 (-1) , האם ניתן להרחיב את לולאת for כך שתריץ מספרים הגדולים מ 2147483647 ?,בכדי לבדוק מספרים הגדולים מ 2^31 (-1) אני משתמש בשורה נוספת (בתוך ללואת ה for) בה אני מוסיף\מכפיל למשתנה מסוג long בנוסף לסכום הנ"ל סכום שאף הוא חייב להיות בגודל של int (ואת המשתנה הנ"ל אני מריץ בלולאת while ) ובכך נדמה לי כי נמנע ממני לבדוק מספר רב של מספרים ראשוניים,ובנוסף גם כך איני יכול לבדוק מספרים הגדולים מערכו המקסימלי של long ,האם ישנה דרך אשר בעזרתה אוכל לחשב ולבדוק מספרים הגדולים בהרבה?האם ניתן לשנות משהו ב java עצמה? קרי במידה ואכן ניתנת גישה למספרים גדולים יותר האם אוכל לתכנת איתם ב java ? ובכלל כיצד מדענים בודקים תכונות של מספר כגון 7^3486784401 ? תודה רבה
|
חזרה לתחילת העמוד |
|
|
עזריה אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 30 April 2009 בשעה 22:37 | | IP רשוּם
|
|
|
|
היי,
אם אני לא טועה ל-Java יש תמיכה במס' שלמים גדולים באמצעות המחלקה BigIntger שנמצא ב-package Math.
|
חזרה לתחילת העמוד |
|
|
cp77fk4r מנהל פורומים
מנהל פורום אבטחת מידע
הצטרף / הצטרפה: 09 April 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 501
|
נשלח בתאריך: 01 May 2009 בשעה 01:15 | | IP רשוּם
|
|
|
|
או לכתוב טיפוס חדש ולממש לו את הפונקציות שאתה צריך (כפל חילוק חזקה וכו').
תנסה, זה יותר פשוט ממה שנדמה לך.
__________________ [Th3rE R mAnY wAyZ 2 r3aD oN3 EmPty p4gE]
|
חזרה לתחילת העמוד |
|
|
:) אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 01 May 2009 בשעה 07:26 | | IP רשוּם
|
|
|
|
בטוח אפשר לעשות משהו , לדוגמה מה ש
cp77fk4r אמר אבל רק שתדע שבכמעט כול השפות זה ככה כי מספרים גדולים תופסים הרבה מקום בזיכרון
|
חזרה לתחילת העמוד |
|
|
moz@rt משתמש מתחיל
הצטרף / הצטרפה: 29 April 2009
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 01 May 2009 בשעה 13:21 | | IP רשוּם
|
|
|
|
תודה על העזרה
האם ע"י קביעת טיפוס חדש ניתן לעבור את מחסום ה 2^63 ? כיצד ניתן לקבוע טיפוס כזה ?
האם במחלקה BigIntger ישנה תמיכה במספרים הגדולים 2^63?
|
חזרה לתחילת העמוד |
|
|
:) אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 01 May 2009 בשעה 14:54 | | IP רשוּם
|
|
|
|
ברגע שאתה בונה את הטיפוס אתה יכול כמה שאתה רוצה כול עוד מספיק זיכרון ( ויש ... ) לגבי BigInteger אני לא מכיר את הטיפוס הזה ( אני לא מתכנת בגאווה ) תחפש עליו באינטרנט או פשוט תנסה
|
חזרה לתחילת העמוד |
|
|
moz@rt משתמש מתחיל
הצטרף / הצטרפה: 29 April 2009
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 02 May 2009 בשעה 21:33 | | IP רשוּם
|
|
|
|
אשמח מאד אם מישהו יוכל להסביר כיצד ניתן לקבוע טיפוס חדש ב JAVA
תודה רבה
|
חזרה לתחילת העמוד |
|
|
:) אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 02 May 2009 בשעה 21:48 | | IP רשוּם
|
|
|
|
מה השאלה פה איך לקבוע טיפוס חדש ( כאילו מחלקה ) או שאתה ידוע איך בונים מחלקות וכולי ואתה פשוט לא יודע איך לממש טיופס של INT ?
לפי דעתי זה לא כל כך קל לבנות בעצמך את הטיפוס הזה והיתי מציע לך לחפש מחלקות מוכנות לדבר הזה ( אני אישית לא מכיר אבל אני בטוח שיש איפשהוא ) רק צריך לחפש באינטרנט
|
חזרה לתחילת העמוד |
|
|
moz@rt משתמש מתחיל
הצטרף / הצטרפה: 29 April 2009
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 02 May 2009 בשעה 22:28 | | IP רשוּם
|
|
|
|
לא הייתי שואל בפורום כיצד בונים מחלקה רגילה
הבעיה היא שגם כאשר אני בונה מחלקה, בכדי להגדיר משתנים אני צריך להשתמש בטיפוסים
"מוכנים" (עד כמה שאני יודע,ומעבר לכך זה בדיוק מה שאני מבקש) כגון int,long וכ'ו מה שמחזיר אותי לגבולות המספריים השכיחים , וכך אני מוצא את עצמי בנקודת ההתחלה
|
חזרה לתחילת העמוד |
|
|
danikel משתמש מתחיל
הצטרף / הצטרפה: 19 December 2008 מדינה: Israel
משתמש: מנותק/ת הודעות: 32
|
נשלח בתאריך: 03 May 2009 בשעה 11:01 | | IP רשוּם
|
|
|
|
http://www.codeproject.com/KB/cs/biginteger.aspx
http://stackoverflow.com/questions/176775/big-integers-in-c
אולי זה יעזור לך... בכל מקרה, בשביל מה אתה צריך את זה? PROJECT EULER?
__________________
|
חזרה לתחילת העמוד |
|
|
moz@rt משתמש מתחיל
הצטרף / הצטרפה: 29 April 2009
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 03 May 2009 בשעה 13:06 | | IP רשוּם
|
|
|
|
תודה רבה
אני מנסה (מתוך סקרנות ותו לא ) לבדוק כל מיני תכונות של מספרים , מכיוון שתכונות מסוימות לאו דוקא עקביות בכל המספרים ואיני יכול להקיש מטריליון המספרים הראשונים על השאר(מלכתחילה),אי לכך הנני מעוניין להמשיך ולבדוק מספרים עולים וגדלים עד שזכרון המחשב יכרע תחת העומס (או עד שאוכל להקיש מקבוצה אחת על חברתה).
יכול להיות שהעלת נקודה חשובה (הדבר תלוי בהתאמת הניחוש שלי לכוונתך)"פרויקט אוילר" הוא מן מאמץ שבו מדענים משתפים אנשים מן המניין ונותנים להם לבדוק (לדוגמא) אם מספר ענק הוא ראשוני ? במידה וכן יכול להיות שהם שולחים להם תוכנה שבעזרתה כל אחד יוכל במחשבו האישי לבדוק מספר שמן הסתם חורג בהרבה מהגבלות הגודל הרגילות , ובכדי להשיג "קוד" כזה ניתן להרשם לאחד הפרויקטים הללו
|
חזרה לתחילת העמוד |
|
|
cp77fk4r מנהל פורומים
מנהל פורום אבטחת מידע
הצטרף / הצטרפה: 09 April 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 501
|
נשלח בתאריך: 03 May 2009 בשעה 13:47 | | IP רשוּם
|
|
|
|
פעם בניתי תוכנה שמחשבת כל מני שטויות עם מספרים ראשוניים ואיזה ניסוי קטן על כמה הנחות של רימן, בכל אופן, הרעיון במחלקה עם מספרים עצומים היא פשוטה, צור טיפוס שהוא מערך של נניח 10000 תאים,שבו כל תא הוא עוד מערך של 10000 תאים שבו כל תא יהיה INT מ1 עד 9 (או עוד מערך וכו', תלוי עד כמה עצומים המספרים שאתה מנסה לחשב), עכשיו, הרעיון הוא ליצור את הפונקציות שדרכם תבצע את החישוב של הטיפוס הנ"ל, נניח פעולת חיבור בין טיפוסים (או בין מספר לטיפוס), לא תוכל לבצע את זה בצורצה הרגילה, ולכן תאלץ לכתוב תוכנית, הרעיון די פשוט אם אתה יודע איך המספרים עובדים:
תסתכל על מספרים רגילים, בסיס דצימאלי, נניח יש לנו את המספר X, ואנחנו רוצים להוסיף לו את המספר Y, נבצע את זה בצורה הבאה:
מחסירים מY אחד.
כל עוד Y גדול מ0 מבצעים:
[עכשיו יש פה רקורסיה שפועלת בצורה הבאה]:
מתחילים בתא ההכי ימני, אם הוא שווה ל9 אז מאפסים אותו ועובדים לתא השמאלי ממנו, אם הוא שווה גם ל9 מאפסים גם אותו ועוברים עוד פעם שמאלה- עד שמגיעים לתא שקטן מ9 ומוסיפים לו-1.
אחרי זה שוב פעם מחסירים מY אחד ומבצעים את הפעולה הקודמת שוב, בסופו של דבר אני מניח שאתה מבין את הרעיון.
אותו דבר עם מנוס.
כפל, חילוק, חזקה וכו' גם אפשרי- אבל כאן יש טריק מאוד נחמד אם אתה ידוע להשתמש במתמטיקת שעונים, יענו- מודולרית, אבל לא חובה.
__________________ [Th3rE R mAnY wAyZ 2 r3aD oN3 EmPty p4gE]
|
חזרה לתחילת העמוד |
|
|
moz@rt משתמש מתחיל
הצטרף / הצטרפה: 29 April 2009
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 03 May 2009 בשעה 13:56 | | IP רשוּם
|
|
|
|
תודה
אתמול ניסיתי לבצע פעולות על מספרים גדולים מאד ע"י מערך כפי שאתה מתאר והמחשב ציין חריג (ולצערי אין לי מושג מה זה אומר [התהליך לא קרה בהידור אלא בהרצה]):
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 49 at T.main(T.java:8)
וגם כך , השיטה תסרבל במעט את העניינים ברגע שארצה לבצע פעולות מסובכות יותר על המספר
|
חזרה לתחילת העמוד |
|
|
cp77fk4r מנהל פורומים
מנהל פורום אבטחת מידע
הצטרף / הצטרפה: 09 April 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 501
|
נשלח בתאריך: 03 May 2009 בשעה 15:19 | | IP רשוּם
|
|
|
|
אני צריך לראות את הקוד שלך בכדי להגיד לך ממה נרגמה השגיאה הזאת, בינתיים אני יכול להגיד לך שזה כניראה משהו בשורה 49 ;)
כמעט כל פעולה אתה יכול לפשט למספר תת פעולות קטנות ופשוטות יותר, תנסה ותראה.
__________________ [Th3rE R mAnY wAyZ 2 r3aD oN3 EmPty p4gE]
|
חזרה לתחילת העמוד |
|
|
yohai מנהל פורומים
הצטרף / הצטרפה: 11 November 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 354
|
נשלח בתאריך: 04 May 2009 בשעה 08:25 | | IP רשוּם
|
|
|
|
וגם בגלל שאתה מנסה לגשת לאינדקס במערך שהוא לא בגבולות
המערך שלך...
|
חזרה לתחילת העמוד |
|
|