求三七数

题目

给定一个整数,判断该数是否为三七数。三七数的定义为:若该数含有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
是

猜你喜欢

转载自blog.csdn.net/kooking_l/article/details/80600720