雷劈数编程实现
雷劈数编程实现
- 题目
题目
编程找出N以内的雷劈数。雷劈数的定义为:若正整数X的平方可以分割为二个数字,而这二个数字相加后恰等于X,那么X的平方就是(n进位下的)一个雷劈数,又称卡布列克数。例如55^2=3025,而30+25=55,那么3025就是一个雷劈数。
10<=N<1000000
java代码实现:
import java.util.*;
class Solution {public static void main(String[] args) {LightningNumbers(10000);}/*** 雷劈数* @param num 原数字* @return*/private static ArrayList<Integer> LightningNumbers(int num){//存储结果集合ArrayList<Integer> lightningNumbers = new ArrayList<>();for (int i = 1; i <= num; i++) {//判断n是不是雷劈数if(isLightningNumbers(i)){lightningNumbers.add((int) Math.pow(i,2));}}System.out.println("The lightning numbers up to " + num + " are:");for (int lightningNumber : lightningNumbers) {System.out.println(lightningNumber);}return lightningNumbers;}private static boolean isLightningNumbers(int num) {//平方数int power = (int) Math.pow(num,2);String sqrString = Integer.toString(power);int length = sqrString.length();if(length < 2){return false;}//循环截取for(int flag = 1;flag<length-1;flag++){String firstHalf = sqrString.substring(0, flag);String secondHalf = sqrString.substring(flag);//分割得到的第一个与第二个数int firstNum = Integer.parseInt(firstHalf);int secondNum = Integer.parseInt(secondHalf);if(firstNum+secondNum == num){return true;}}return false;}}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
