שאלה\בעיה ב-C
אהלן,
קיבלנו תרגיל שחלק ממנו זה לבנות תוכנית שמקבלת 2 מספרים,
ובודקת כמה מחלקים ראשוניים משותפים יש להם, עם חזרות.
כלומר:
מס' ראשוני - 2,3,5,7,11...
מחלק ראשוני:
20 - 2,2,5
40 - 2,2,2,5
כלומר, במקרה הזה, התוכנית תחזיר 3.
מותר להשתמש אך ורק בספריית stdio, לולאות ותנאי if.
זה הקוד שרשמתי, אשמח להסבר מה לא טוב בו, ואיך הוא יכול להיות טוב...
(ידוע שהגדרתי הרבה יותר משתנים משצריך, זה לחלק אחר בעבודה)
#include <stdio.h>
int main(){
int min, max, i, j, k, l, m, count1, count2, count3, temp, divider;
scanf("%d",&min);
while (min!=0){
count1=0;
count2=0;
count3=0;
scanf("%d",&max);
for (divider=2; divider*divider<=min; divider++){
if (min % divider == 0)
break;
if (divider*divider >= min){ ///divider is a primal number///
temp = min;
while (temp >= divider){
if (temp % divider == 0){
count2=count2+1;
temp= temp/divider;
}
}
for (l=2; l<=count2; l++){
temp=max;
while (temp>=divider){
if (temp % divider == 0){
count3 = count3 + 1;
temp = temp/divider;
}
}
}
}
if (count3>count2)
count1=count1+count2;
else
count1=count1+count3;
}
printf("%d",count1);
scanf("%d",&min);
}
}
תודה מראש.
אהלן,
קיבלנו תרגיל שחלק ממנו זה לבנות תוכנית שמקבלת 2 מספרים,
ובודקת כמה מחלקים ראשוניים משותפים יש להם, עם חזרות.
כלומר:
מס' ראשוני - 2,3,5,7,11...
מחלק ראשוני:
20 - 2,2,5
40 - 2,2,2,5
כלומר, במקרה הזה, התוכנית תחזיר 3.
מותר להשתמש אך ורק בספריית stdio, לולאות ותנאי if.
זה הקוד שרשמתי, אשמח להסבר מה לא טוב בו, ואיך הוא יכול להיות טוב...
(ידוע שהגדרתי הרבה יותר משתנים משצריך, זה לחלק אחר בעבודה)
#include <stdio.h>
int main(){
int min, max, i, j, k, l, m, count1, count2, count3, temp, divider;
scanf("%d",&min);
while (min!=0){
count1=0;
count2=0;
count3=0;
scanf("%d",&max);
for (divider=2; divider*divider<=min; divider++){
if (min % divider == 0)
break;
if (divider*divider >= min){ ///divider is a primal number///
temp = min;
while (temp >= divider){
if (temp % divider == 0){
count2=count2+1;
temp= temp/divider;
}
}
for (l=2; l<=count2; l++){
temp=max;
while (temp>=divider){
if (temp % divider == 0){
count3 = count3 + 1;
temp = temp/divider;
}
}
}
}
if (count3>count2)
count1=count1+count2;
else
count1=count1+count3;
}
printf("%d",count1);
scanf("%d",&min);
}
}
תודה מראש.