PTA 7-122 *求最大公约数

*PTA 7-122 求最大公约数 分数 10
作者 李祥 单位 湖北经济学院
请编写程序,输入两个整数,计算并输出它们的最大公约数。

输入格式
两个整数

输出格式
最大公约数(正整数)

说明:两个整数可以是正数、零和负数,两个整数的位数都不到 20 位。最大公约数必须是正整数。

注:若两个整数都为 0,则最大公约数规定为 1。

输入样例1

25 -30

输出样例1

5

输入样例2

7 0

输出样例2

7

输入样例3

0 0

输出样例3

1

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

#include <stdio.h>
int main() {
    long long num1, num2, max, temp1, temp2, temp3, temp4;
    //两个整数num1, num2,max是最大公约数,temp1,temp2用来存放
    scanf("%lld %lld", &num1, &num2);//输入两个整数
    num1 = llabs(num1);//绝对值算后面的公约数
    num2 = llabs(num2);
    temp1 = num1;//赋值给temp1
    temp2 = num2;//赋值给temp2
    if (num1 == 0 && num2 == 0) {//若两个整数都为 0,则最大公约数规定为 1
        printf("1");
        return 0;
    } else if (num2 == 0) {//num2为0;输出num1;
        printf("%lld", num1);
        return 0;//返回0;
    }
    while (temp1 % temp2 != 0) {//直到余数为0结束循环
        temp4 = temp1;//把temp1赋值给temp4
        temp3 = temp2;//把temp2赋值给temp3
        temp2 = temp4 % temp2;//相除取余数
        temp1 = temp3;

    }
    max = temp2;//最大公约数
    printf("%lld", max);//输出

    return 0;

}

解题思路
输入两个整数,计算并输出它们的最大公约数的步骤:
step 1:输入两个整数并将其分别赋值存放;
step 2:若两个整数都为 0,则最大公约数规定为 1,若num2为0,则输出num1;
step 3:直到余数为0结束循环,赋值相除取余数;
step 4:输出最大公约数。

归属知识点
选择结构,循环结构

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值