题目
给定一个整数,判断该数是否为三七数。三七数的定义为:若该数含有3或7的因子,则该数为三七数,如:3,7,9,21均为三七数,但6不是三七数,因为6还含有因子2;规定1为三七数。
解读
根据三七数的定义可知,若一个数num分解后只含有3或7,则该数是三七数。
算法如下:
1、判断该数num是否小于8
2、该数小于8,判断该数是否为1或3或7,若是,则为三七数;否则不是。
3、该数大于等于8,继续下一步。
4、判断该数是否能被3或7整除。
5、若该数能被3整除,令num=num/3(向下取整),返回第1步。
6、若该数能被7整除,令num=num/7(向下取整),返回第1步。
7、若该数不能被3或7整除,不是三七数。
编码实现
import java.util.Scanner;
public class ThreeSevenNumber {
public static boolean isThreeSevenNumber(int num){
if(num<8){
if(num==1||num==3||num==7){
return true;
}else {
return false;
}
}else {
boolean flagA=false,flagB=false;
if(num%3==0){
flagA=isThreeSevenNumber(num/3);
}
if (num%7==0) {
flagB=isThreeSevenNumber(num/7);
}
return flagA||flagB;
}
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while (scanner.hasNextInt()) {
int num = scanner.nextInt();
if(isThreeSevenNumber(num)){
System.out.println("是");
}else {
System.out.println("否");
}
}
}
}
运行结果
8
否
10
否
11
否
1
是
3
是
7
是
9
是
21
是
6
否
49
是
81
是