寻找雷劈数(C实现)

寻找雷劈数(C实现)雷劈数 定义为 若正整数 X 在 n 进位下 的平方可以分割为二个数字 而这二个数字相加后恰等于 X 那么 X 的平方就是 n 进位下的 一个雷劈数 又称卡布列克数

雷劈数,定义为:若正整数X(在n进位下)的平方可以分割为二个数字,而这二个数字相加后恰等于X,那么X的平方就是(n进位下的)一个雷劈数,又称卡布列克数。例如55^2=3025,而30+25=55,那么3025就是一个雷劈数。

最小的雷劈数:81

问题:找到以内的所有雷劈数

思路:雷劈数开方出来必然是整数,因此i从9开始(因为最小的为81,sqrt(81)=9),一直到sqrt()=1000,这样可以减少循环次数。每一次循环,先确定i^2的位数,记为count,再分别按顺序将高位和低位分别赋给left和right,最后根据雷劈数定义进行判断。

代码

#include<stdio.h> #include<math.h> int main() { 
    int i, x, count = 0; int left, right; printf("10到之内的雷劈数有:\n"); for (i = 3; i < 1000; i++) { 
    x = i * i; while (x) { 
    x = x / 10; count++; } x = i * i; for (int j = 1; j < count; j++) { 
    left = x % ((int)pow(10, j)); right = x / ((int)pow(10, j)); //关键步骤 if (left + right == i) { 
    printf("%d\n", x); break; } } } return 0; } 

建议使用vs运行,我用cb运行时结果出错,可能是编译器版本问题
vs 2017运行结果
在这里插入图片描述

今天的文章 寻找雷劈数(C实现)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-25 13:01
下一篇 2024-12-25 12:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/96220.html