זהו אלגוריתם על-שם אויקלידס.
להלן האלגוריתם:
#include <stdio.h>int main () { unsigned int m, n; scanf("%u%u", &n, &m); while(n != 0) { unsigned int temp=n; n = m % n; m = temp; } if(m != 0) printf("The gcd is %d\n", m); return 0; }
|
בעצם מה שיקרה זה שכשתכניסו 2 מספרים, הוא יבדוק את החלוקה המשותפת המינילית שלהם (מס' ראשוני, מן הסתם), ויציג לכם אותו.
אילו הייתם רוצים לבדוק מכנה משותף בלופים של חלוקת המס' (או ליתר דיוק - השורש שלו) ב-i++, אז אם למשל מעבד מסוגל לבצע 10^12 פלופים בשניה, תחשבו מה יקרה עם מס' בעל למשל 10 ספרות. זה היה לוקח מליארדי שנים.
עם הנוסא הנ"ל - זה יקח לו פחות משניה.
יעיל מאוד גם כדי לבטא סדרה של מס' ראשוניים