Witam, mam bardzo dziwny problem, otóż w pierwszym while wartość c[0] = 2, jednakże bez zmieniania wartości nagle okazuje się że c[0]=3, powie mi ktoś jakim cudem? Dane wejściowe to a=12 oraz b=48.
jest to program do NWD.
Program najpierw rozkłada na czynniki pierwsze te liczby i dla a zapisuje te wartości do kolejnych tablic zmiennej c, a dla b do tablicy zmiennej d. Trzeci while robi to samo jak się chce wyzn. NWD i ma się te dwie liczby rozłożone na czynniki pierwsze, czyli poprostu szuka wspólnych liczb pierwszych wydzielonych z obu liczb. Poza tym myślę że wiecie jak sięwyznacza NWD :) Wykształcenie podst. wystarczy. KONTROLA ozn. że wstawiłem tam cout żeby sprawdzić czy robi się prawidłowo to co się robi.
int j=0,c[j],d[j],s=1,i=2;
//if(a==1 || b==1) return s;
while(a!=1){
if(a%i==0){
a=a/i;
j++;
c[j-1]=i;
cout<<c[j-1]<<endl;//KONTROLA
}
else i++;
}
cout<<"-----------------------\n";//KONTROLA
j=0;
i=2;
while(b!=1){
if(b%i==0){
b=b/i;
j++;
d[j-1]=i;
cout<<d[j-1]<<endl;//KONTROLA
}
else i++;
}
cout<<"-----------------------\n";//KONTROLA
cout<<j<<"\n\n\n";//KONTROLA
int m=0,n=0;
while(m<j || n<j){
cout<<s<<"pierwsze"<<endl;//KONTROLA
cout<<m<<"- - -"<<n<<endl;//KONTROLA
cout<<c[0]<<"- [] -"<<d[0]<<endl;//KONTROLA
if(c[m]==d[n]){
s=s*c[m];
m++;n++;}
else if(c[m+1]==d[n]){
s=s*c[m+1];m+=2;n++;}
else if(c[m]==d[n+1]){
s=s*c[m];n+=2;m++;}
}