c语言,输出能写成两个数平方和的所有三位数

疑问是下面这个怎样避免两个平方和相等的重复情况?#include"stdio.h"#include"math.h"main(){intn,i=0,a,b;for(n=10... 疑问是下面这个怎样避免两个平方和相等的重复情况?
#include "stdio.h"
#include "math.h"
main()
{int n,i=0,a,b;
for(n=100;n<=999;n=n+1)
for(a=1;a<=32;a=a+1)
for(b=1;b<=a;b=b+1)
if(n==(a+b)*(a+b)-2*a*b)
{i=i+1;
printf("%2d %2d %d ",a,b,n);
if(i%4==0) printf("\n");
}
}
展开
 我来答
百度网友251756e83f
2012-11-01 · 超过22用户采纳过TA的回答
知道答主
回答量:98
采纳率:0%
帮助的人:62.9万
展开全部
当判定n是循环相加和的数后,就直接跳出循环,因为后面的循环没有意义了。这样就可以避免
int flag = 0;
for(n=100;n<=999;n=n+1)
{
for(a=1;a<=32;a=a+1)
{
for(b=1;b<=a;b=b+1)
if(n==(a+b)*(a+b)-2*a*b)
{i=i+1;
printf("%2d %2d %d ",a,b,n);
if(i%4==0) printf("\n");
flag=1;
break;
}
if (flag == 1)
{
flag = 0;
break;
}

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2012-11-01 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6480万
展开全部
改成函数调用,可轻松解决!
即把检查一个n是否存在放到一个函数中,只要检查通过,就立即返回就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
严峻2012
2012-11-01 · 超过10用户采纳过TA的回答
知道答主
回答量:24
采纳率:0%
帮助的人:20.6万
展开全部
  • #include "stdio.h"
    #include "math.h"
    main()
    {int n,i=0,a,b;
    for(n=100;n<=999;n=n+1)
    for(a=1;a<=32;a=a+1)
    for(b=a;b<=32;b=b+1)(改这行就行了)
    if(n==(a+b)*(a+b)-2*a*b)
    {i=i+1;
    printf("%2d %2d   %d       ",a,b,n);
    if(i%4==0) printf("\n");
    }
    }

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在舜耕山滑冰的榛子
2012-11-01 · TA获得超过123个赞
知道小有建树答主
回答量:520
采纳率:0%
帮助的人:341万
展开全部
#include "stdio.h"
#include "math.h"
main()
{int n,i=0,a,b;
for(n=100;n<=999;n=n+1)
for(a=1;a<=32;a=a+1)
for(b=1;b<=a;b=b+1)
if(n==(a+b)*(a+b)-2*a*b)
{i=i+1;
printf("%2d %2d %d ",a,b,n);
if(i%4==0) printf("\n");
n=n+1;//加上这个应该就可以了
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nydnhs
2012-11-01 · TA获得超过1070个赞
知道小有建树答主
回答量:622
采纳率:0%
帮助的人:518万
展开全部
用一个数组记录这个三位数,然后每次和这个数组内的数比较,不相同就输出
PS:为何平方和不直接用n==a*a+b*b?对于计算机来说还减少计算步骤
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式