从键盘输入一个2位正整数n,将全部满足条件
a平方+b平方=n平方的a,b,n中a最小的a,b,n输出,
要求a,b都是正整数且a≥b>0。
输出格式为 a=*,b=*,n=*。如果不存在这样的a,b,
则输出“不存在这样的a,b
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
int ma = n, mb;
for (int a = 1; a <=n; a++)
{
for (int b = 1; b <=n; b++)
{
if (a >= b && a*a + b * b == n * n)
{
if (ma > a)
{
ma = a;
mb = b;
}
}
}
}
if (ma != n)
cout << "a=" << ma << ",b=" << mb << ",n=" << n<<endl;
else
cout << "不存在这样的a,b";
return 0;
}
根据题意,写了下面代码。仅供参考,谢谢!
#include <stdio.h>
int main(int argc, char** argv){
int a,b,n=1,res,flag=0;
//限定输入不在10~99这个范围内重新输入
printf("请输入一个两位数的正整数:\n");
do{
scanf("%d",&n);
}while(n<10 || n>99);
res=n*n;
for(int a=1;a<100;a++)
{
for(int b=1;b<100;b++)
{
if( (a*a+b*b)==res )
{
printf("\n满足条件a最小:\n");
printf("a=%d,b=%d,n=%d\n",a,b,n);
flag=1;
break;
}
}
if(flag)
break;
}
if(!flag)
{
printf("\n不存在这样的a,b。\n");
}
return 0;
}
#include <stdio.h>
int main(){
int a,b,n,flag=1;
scanf("%d",&n);
for(a=1;flag && a<n;a++){
for(b=1;b<n;b++){
if((a>b||a==b)&&(a * a+b * b==n*n)){
printf("a=%d,b=%d,n=%d",a,b,n);
flag=0;
break;
}
}
}
if(flag==1){
printf("不存在这样的a,b");
}
return 0;
}