谁能帮我看看啊。mn

小Z在“定向越野”的比赛中,过关斩将,克服重重难关,快速且高效地完成了各个关卡裁判安排的任务,转眼间,小Z来到了最后一关。说来最后一关也真是有趣,把奖品锁在了一个带有电子屏幕的宝盒中,只要破解密码打开宝盒,即可获得最终的大奖,由于宝盒只有一个,所以很考验小Z的破解的速度。破解题目规则如下:将一个给定的n×m矩形划分为一个个正方形,其规则是先尽可能多地从矩形中划分一块正方形,接下来,在剩下的矩形中尽可能多的划分一块正方形……,例如,图中所示是一个3×4的矩阵,可最少划分为4个正方形。
这是题目
谁能帮我解决啊

#include<iostream> // 引入标准输入输出流库
using namespace std; // 使用命名空间std

int main(){
    int n, m;
    cin >> n >> m; // 输入矩阵的行数n和列数m
    int ans = 0; // 定义最少需要划分的正方形数
    while(n && m){
        if(n > m){
            swap(n, m); // 保证n <= m
        }
        ans += m / n; // 计算需要划分的正方形数
        m %= n; // 计算剩余的矩形面积
    }
    cout << ans << endl; // 输出最少需要划分的正方形数
    return 0; // 返回0表示程序执行成功
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^