
简易算一下,1000以下能开方的最小值是10,最大值是31(因为32*32=1024)
这样以来你的问题就转化成了从10到32的整数值的和.
代码如下
#include "stdio.h"main()
{
int i=10
int sum=0
for(i=10i<32i++)
sum+=i
printf("%d\n",sum)
}
执行结果 451
#include <stdio.h>#include <math.h>
int main(void)
{
int i, a, b, c, r
int sum = 0
for (i = 10 i < 1000 i++)
{
a = i / 100 //百位数
b = i / 10 % 10 //十位数
c = i % 10 //个位数
//只有两位数
if (a == 0)
{
if (b == c)
{
r = (int)sqrt(i)
if (i == r * r)
{
printf("%d\n", i)
sum += i
}
}
continue
}
//三位数都相等
if (a == b && b == c)
{
continue
}
//有两位数相等
if (a == b || b == c || a == c)
{
r = (int)sqrt(i)
if (i == r * r)
{
printf("%d\n", i)
sum += i
}
}
}
printf("sum is %d\n", sum)
return 0
}
cc test.c -o test -lm
./test
100
121
144
225
400
441
484
676
900
sum is 3491
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)