问题 D: 寻求勾股数

题目描述

满足x2+y2=z2的正整数x,y和z称为一组勾股数(pythagorean triple),又称为毕达哥拉斯三元数组。现在要求你编程求指定范围内的勾股数。

输入

输入若干对数a和b,每对数占一行。0<=a,b<=10000,分别为指定范围的最小值和最大值。

输出

输出为多行,与上述输入一一对应。

每行输出首先输出用例编号“case i",其中i为行号,从1开始计数。

如果指定范围内有勾股数,则按照x从小到大的顺序输出每组勾股数,每组勾股数要求x<y<z。勾股数的组与组之间用一个分号(";")隔开。

如果指定范围内没有勾股数,则输出”No pythagorean triple“。

样例输入

1 10
6 9

样例输出

case 1:3,4,5;6,8,10
case 2:No pythagorean triple

代码如下:

#include<stdio.h>
int main()
{
	int a,b;
	int count = 1;
	while(scanf("%d %d",&a,&b)!=EOF)
	{
		int flag = 0;
		int c = 0;
		printf("case %d:",count);
		for(int i=a;i<=b;i++)
		{
			for(int j=i;j<=b;j++)
			{
				for(int k=j;k<=b;k++)
				{
					if(i*i + j*j == k*k)
					{
						flag = 1;
						if(c==0)
						{
							printf("%d,%d,%d",i,j,k);
						}
						else
						{
							printf(";%d,%d,%d",i,j,k);
						}
						c++;
					}
				}
			}
		}
		if(flag == 0)
		{
			printf("No pythagorean triple");
		}
		count++;
		printf("\n");
	}
	return 0;
}
发布了99 篇原创文章 · 获赞 63 · 访问量 6225

猜你喜欢

转载自blog.csdn.net/m0_43456002/article/details/102964036