第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

請(qǐng)問(wèn)該如何實(shí)現(xiàn)計(jì)算a,b的所有公約數(shù)?具體看下面!

請(qǐng)問(wèn)該如何實(shí)現(xiàn)計(jì)算a,b的所有公約數(shù)?具體看下面!

實(shí)現(xiàn)函數(shù)int CommonFactors(int a,int b),計(jì)算a,b的所有公約數(shù)。第一次調(diào)用,返回最大公約數(shù),以后只要使用相同參數(shù)調(diào)用,每次返回下一個(gè)小一些的公約數(shù)。無(wú)公約數(shù)返回-1。以下是我的源代碼:/*函數(shù)功能:計(jì)算兩個(gè)正整數(shù)的最大公約數(shù)函數(shù)入口參數(shù):兩個(gè)正整數(shù)函數(shù)返回值:兩個(gè)正整數(shù)的最大公約數(shù)*/int MaxCommonFactor(int x, int y){while(x != y){if(x > y){ x = x - y; }else{ y = y - x; }}return x;}/*函數(shù)功能:計(jì)算兩個(gè)整數(shù)的所有公約數(shù)函數(shù)入口參數(shù):兩個(gè)整數(shù)函數(shù)返回值:第一次返回最大公約數(shù),以后返回下一個(gè)小一些的公約數(shù);無(wú)公約數(shù)是返回-1*/int CommonFactor(int h, int k){int b;int i; //定義循環(huán)變量b = MaxCommonFactor(h, k); //存放最大公約數(shù)的變量for(i=b; i>0; i--){if(h%i == k%i){return i;}}return -1;}/*主函數(shù)*/void main(){int a;a = CommonFactor(100, 50);printf("CommonFactor = %d\n",a); //按題目意思,這里應(yīng)該打印50a = CommonFactor(100, 50);printf("CommonFactor = %d\n",a); //按題目意思,這里應(yīng)該打印25}具體的理解是這樣的:在一次執(zhí)行內(nèi),這個(gè)函數(shù)被調(diào)用了多次,但是每次打印的結(jié)果不同。比如,求100和50的公約數(shù),題目的要求是:第一次調(diào)用打印出50,第二次調(diào)用打印出25,第三次調(diào)用打印出10,第四次調(diào)用打印出2,第五次調(diào)用打印出1;但是你可以只是調(diào)用兩次,打印出50和25,而不是一次調(diào)用就把全部公約數(shù)全部的打印完。我的疑問(wèn)是:我不能實(shí)現(xiàn)第二次打印25,第二次和以后的調(diào)用都是輸出50,請(qǐng)高手幫忙修改一下程序,最好也有詳細(xì)的解釋。謝謝??!這題目搞了我一個(gè)下午,我初學(xué),奔淚。。。主要是int CommonFactor(int h, int k)的實(shí)現(xiàn),int MaxCommonFactor(int x, int y)是沒(méi)有問(wèn)題的吧。另外,希望不要用到數(shù)組,指針,結(jié)構(gòu)體。
查看完整描述

2 回答

?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊

//按題目的意思要判斷是否使用相同的參數(shù)
struct
{
int a, b, gcd, k;
}A[256];
int N = 0;
int gcd(int a, int b)
{
int t = a%b;
while(t)
{
a = b;
b = t;
t = a%b;
}
return b;
}
int CommonFactor(int a, int b)
{
int i, k, y;
for(i=0; i<N; i++)
if(a==A[i].a && b==A[i].b)break;
if(i==N)
{
A[N].a = a;
A[N].b = b;
A[N].k = 1;
A[N].gcd = gcd(a, b);
++N;
return A[i].gcd;
}
k = 0;
for(y = A[i].gcd-1; y>0; y--)
{
if(A[i].gcd % y == 0)++k;
if(k==A[i].k)break;
}
if(k!=A[i].k)return -1;
++A[i].k;
return y;
}
void fun(int a, int b)
{
printf("(%d %d) : %d\n", a, b, CommonFactor(a, b));
}
int main()
{
fun(100, 50);
fun(4, 6);
fun(100, 50);
fun(4, 6);
fun(100, 50);
fun(100, 50);
fun(100, 50);
fun(100, 50);
fun(100, 50);
}



查看完整回答
反對(duì) 回復(fù) 2021-07-04
  • 2 回答
  • 0 關(guān)注
  • 695 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)