我想创建一个程序,其中用户将键入一个数字,程序将告诉它是否可以被3整除。但%,/,+,*不能在程序中使用。这里的任何人都有一些想法如何做到这一点?
答案 0 :(得分: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:如果你想处理负数,需要进行调整
答案 1 :(得分: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]))*");
}
答案 2 :(得分:2)
如果所有数字的总和也可被3整除,则数字可被整除。您可以迭代该过程,直到数字小于10并将其与已知除数(3,6和9)进行比较
由于它很可能是游戏或家庭作业,你可以使用+
,你可以简单地使用减去两次:a - - b
相当于a + b
答案 3 :(得分:1)
假设您可以使用 - 运算符
bool divBy3(int n)
{
while (n >= 0)
{
n -= 3;
}
return n == 0;
}
如果n可以被3整除,则返回true,否则返回false。请注意,这实在是效率低下!使用%运算符会好得多。
答案 4 :(得分:0)
二进制表示中3的可分性就像十进制中的11的可分性(10 + 1):偶数位数的总和减去奇数位数上的数字之和依次可被3整除(可能为0)。