You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
844 B
45 lines
844 B
package class38;
|
|
|
|
public class Code03_MSumToN {
|
|
|
|
public static boolean isMSum1(int num) {
|
|
for (int start = 1; start <= num; start++) {
|
|
int sum = start;
|
|
for (int j = start + 1; j <= num; j++) {
|
|
if (sum + j > num) {
|
|
break;
|
|
}
|
|
if (sum + j == num) {
|
|
return true;
|
|
}
|
|
sum += j;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static boolean isMSum2(int num) {
|
|
//
|
|
// return num == (num & (~num + 1));
|
|
//
|
|
// return num == (num & (-num));
|
|
//
|
|
//
|
|
return (num & (num - 1)) != 0;
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
for (int num = 1; num < 200; num++) {
|
|
System.out.println(num + " : " + isMSum1(num));
|
|
}
|
|
System.out.println("test begin");
|
|
for (int num = 1; num < 5000; num++) {
|
|
if (isMSum1(num) != isMSum2(num)) {
|
|
System.out.println("Oops!");
|
|
}
|
|
}
|
|
System.out.println("test end");
|
|
|
|
}
|
|
}
|