C语言编程练习24:一个数学问题

题目描述

给你两个整数n和m,请你计算有多少个整数对(a,b)满足以下条件:
当0<a<b<n时,(a^2+b^2+m)/(ab)是一个整数。

输入

输入包含多组测试数据。每组输入为两个整数n和m(0<n<=100),当n=m=0时,输入结束。

输出

对于每组输入,输出样例标号和满足要求的整数对的个数。

样例输入 Copy

10 1
20 3
30 4
0 0

样例输出 Copy

Case 1: 2
Case 2: 4
Case 3: 5

思路:这道题对于来说、难的地方就是判断是否为整数了。用余数是否为0来判断是否为整数,余数为0就是整数。
#include <iostream>

using namespace std;

int main()
{
    int n,m,t=0;//t用来记录是第几组数据
    int x,y;
    while(scanf("%d %d",&n,&m)!=EOF)
    {
        int c=0;//记录满足条件的整数对的个数
        if(n==0&&m==0)
        {
            break;
        }
        for(int i=1;i<n-1;i++)
        {
            for(int j=i+1;j<n;j++)
            {
                x=i*i+j*j+m;
                y=i*j;
                if(x%y==0)//通过余数判断是否为整数
                {
                    c++;
                }
            }
        }
        t++;
        printf("Case %d: %d
",t,c);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/FantasticDoubleFish/p/14319133.html