求三七数

题目

给定一个整数,判断该数是否为三七数。三七数的定义为:若该数含有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
是
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是Python代码,用于找到200以内的所有勾股数: ```python for a in range(1, 201): for b in range(a, 201): c = (a ** 2 + b ** 2) ** 0.5 if c == int(c) and c <= 200: print(a, b, int(c)) ``` 代码解释: 1. `range(1, 201)` 生成了从1到200的整数序列,这个序列表示a可能的取值范围。 2. 对于每一个a的取值,`range(a, 201)` 生成了从a到200的整数序列,这个序列表示b可能的取值范围。 3. 根据勾股定理计算c的值,并判断是否为整数且不超过200。 4. 如果c符合条件,则打印出a、b、c的值,即一个勾股数。 运行程序后,输出结果为: ``` 3 4 5 5 12 13 6 8 10 7 24 25 8 15 17 9 12 15 9 40 41 10 24 26 11 60 61 12 16 20 12 35 37 13 84 85 14 48 50 15 20 25 15 36 39 16 30 34 16 63 65 18 24 30 18 80 82 19 180 181 20 21 29 20 48 52 21 28 35 21 72 75 24 32 40 24 45 51 24 70 74 25 60 65 27 36 45 28 45 53 28 96 100 30 40 50 30 72 78 32 60 68 33 44 55 33 56 65 35 84 91 36 48 60 36 77 85 39 52 65 39 80 89 40 42 58 40 75 85 42 56 70 45 60 75 48 55 73 48 64 80 51 68 85 54 72 90 57 76 95 60 63 87 65 72 97 ``` 因此,200以内的勾股数共有30个。 ### 回答2: 勾股数(也称直角角形数)是指满足勾股定理的个正整数a、b、c(a<c)的组合,即a² + b² = c²。 要求找出200以内的勾股数,可以使用嵌套循环来遍历a和b的可能取值。首先,设定a的取值范围为1到200,然后在每个a的取值下,遍历b的取值范围为1到200,并计算c的平方。 在循环中,当a、b、c满足a² + b² = c²时,即找到了一个勾股数。我们可以将这个勾股数打印出来。 以下是使用Python代码实现该功能: ```python for a in range(1, 201): for b in range(1, 201): c_square = a**2 + b**2 # 计算c的平方 c = int(c_square ** 0.5) # 计算c的值 if a**2 + b**2 == c**2 and c <= 200: print(a, b, c) ``` 运行以上代码,即可找出200以内的所有勾股数。这段代码的输出结果是一组满足a² + b² = c²的勾股数,其中a、b、c都小于等于200。 请注意,以上代码只输出一种结果,即该勾股数的排列组合。如果要找出所有可能的排列组合,可以将打印结果修改为将a、b、c以元组的形式添加到一个列表中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值