Linux 上求 1000以内可开方数拥有2个相同数字( 比如 144 121)之和 的程序

Linux 上求 1000以内可开方数拥有2个相同数字( 比如 144 121)之和 的程序,第1张

简易算一下,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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7281867.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-03
下一篇2023-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存