与其明天开始,不如现在行动!
文章目录
- 连续正数和
- 1 题目描述
- 2 解决思路
- 3 代码实现
- 💎总结
连续正数和
1 题目描述
定义一种数:可以表示成若干 (数量>1) 连续正数和的数比如:
5 =2+3,5就是这样的数
12=3+4+5,12就是这样的数
1不是这样的数,因为要求数量大于1个、连续正数和2=1+1,2也不是,因为等号右边不是连续正数。给定一个参数N,返回是不是可以表示成若干连续正数和的数
2 解决思路
- 输入简单:给定一个数,返回值简单:是或不是
- 暴力打表找规律
- 根据规律优化代码
3 代码实现
暴力打表:
public class MSumToN {
public static boolean isMSum(int num) {
for (int i = 1; i < num; i++) {
int sum = i;
for (int j = i + 1; j < num; j++) {
if (sum + j > num) {
break;
}else if (sum + j == num) {
return true;
}
sum += j;
}
}
return false;
}
public static void main(String[] args) {
for (int num = 0; num <= 100; num++) {
System.out.println(num + ":" + isMSum(num));
}
}
}
规律:
出现false的数字:0,1,2,4,8,16…
优化code:
public class MSumToN {
public static boolean isMSumAwesome(int num) {
if (num < 3) {
return false;
}
return (num & (num - 1)) != 0;
}
public static void main(String[] args) {
int N = 50;
System.out.println(isMSumAwesome(N));
}
}
💎总结
本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家😘!!!