我想创建一个程序,其中用户将键入一个数字,该程序将判断它是否可以被 3 整除。但是%、/、+、*不能在程序中使用。这里有人对如何做到这一点有一些想法吗?
user1410081
问问题
3150 次
5 回答
6
public static void main(String[] args) {
String number = "123456";
int sum = 0;
for (char c : number.toCharArray()) {
sum = sum - (0 - c) - '0';
while (sum >= 3) {
sum -= 3;
}
}
System.out.print("divisible by 3? ");
System.out.println(sum == 0);
}
或者,您可以继续减去 3,直到您的数字为 0(可被 3 整除)或 <0:不能被 3 整除。
ps:如果要处理负数需要调整
于 2012-07-18T10:04:38.897 回答
3
十分简单...
boolean divisibleBy3(int n) {
return (""+n).matches("([0369]|[147]([0369]|[147][0369]*[258])*([" +
"258]|[147][0369]*[147])|[258]([0369]|[258]" +
"[0369]*[147])*([147]|[258][0369]*[258]))*");
}
于 2012-07-18T10:07:06.953 回答
2
如果所有数字的总和也可被 3 整除,则该数字可被该数字整除。您可以迭代该过程,直到有一个小于 10 的数字并将其与已知除数(3,6 和 9)进行比较
由于它很可能是一个游戏或家庭作业并且你可以使用+
你可以简单地使用减去两次:a - - b
相当于a + b
于 2012-07-18T10:03:29.527 回答
1
假设您可以使用 - 运算符然后
bool divBy3(int n)
{
while (n >= 0)
{
n -= 3;
}
return n == 0;
}
如果 n 可以被 3 整除,则返回 true,否则返回 false。请注意,这确实效率低下!使用 % 运算符会好得多。
于 2012-07-18T10:10:03.080 回答
0
在二进制表示中被 3 整除就像在十进制 (10+1) 中被 11 整除:偶数位的数字总和减去奇数位的数字总和反过来又能被 3 整除(可能是 0)。
于 2012-07-18T11:36:33.283 回答