自学java第九天小练习

读入一个整数,统计并输出该数中2的个数。
package day9;

import java.util.Scanner;

/*
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
读入一个整数,统计并输出该数中2的个数。
要求定义并调用函数countdigit(number,digit)
它的功能是统计整数number中数字digit的个数。
例如,countdigit(10090,0)的返回值是3。
例:括号内是说明
输入:
3 (repeat=3)
-21902
2
345543
输出:
count=2 (-21902中有2个2)
count=1 (2中有1个2)
count=0 (345543中没有2)
*/
public class Test41 {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入运算次数:");
        int repeat = sc.nextInt();
        int count = 0;
        for (int i = 1; i <= repeat; i++) {
            System.out.println("请输入一个数:");
            long number = sc.nextInt();
            count = countdigit(number, '2');
            System.out.println("count=" + count);
        }
    }

    private static int countdigit(long number, char digit) {
        int sum = 0;
        String s = String.valueOf(number);
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c == digit)
                sum++;
        }
        return sum;
    }

}
输入一个正整数n,如果它是素数,输出"YES",否则,输出"NO"
package day9;

import java.util.Scanner;

/*
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个正整数n,如果它是素数,输出"YES",否则,输出"NO"
(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
要求定义并调用函数prime(m)判断m是否为素数。
例:括号内是说明
输入:
4 (repeat=4)
1 2 9 17
输出:
NO (1不是素数)
YES (2是素数)
NO (9不是素数)
YES (17是素数)
 */
public class Test42 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入运算次数:");
        int repeat = sc.nextInt();
        for (int i = 1; i <= repeat; i++) {
            System.out.println("请输入一个正整数:");
            int number = sc.nextInt();
            boolean flag = prime(number);
            if (flag)
                System.out.println("YES");
            else
                System.out.println("NO");
        }
    }

    private static boolean prime(int m) {
        boolean flag = true;
        if (m == 1)
            flag = false;
        else {
            for (int i = 2; i <= m / 2; i++) {
                if (m % i == 0) {
                    flag = false;
                    break;
                }
            }
        }
        return flag;
    }

}
输入两个正整数m和n(1<=m,n<=500),统计并输出m和n之间素数的个数以及这些素数的和。
package day9;

import java.util.Scanner;

/*
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入两个正整数m和n(1<=m,n<=500),统计并输出m和n之间素数的个数以及这些素数的和
(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
要求定义并调用函数prime(m)判断m是否为素数。
例:括号内是说明
输入:
3 (repeat=3)
1 10 (m=1, n=10)
20 35 (m=20, n=35)
14 16 (m=14, n=16)
输出:
count=4, sum=17 (1到10之间有4个素数:2,3,5,7)
count=3, sum=83 (20到35之间有3个素数:23, 29, 31)
count=0,sum=0 (14到16之间没有素数)
 */
public class Test43 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入运算次数:");
        int repeat = sc.nextInt();
        for (int i = 1; i <= repeat; i++) {
            System.out.println("请输入范围:(例如:a b)");
            int m = sc.nextInt();
            int n = sc.nextInt();
            int count = 0, sum = 0;
            for (int j = m; j <= n; j++) {
                if (prime(j)) {
                    count++;
                    sum += j;
                }
            }
            System.out.println("count=" + count + ", sum=" + sum);
        }
    }

    private static boolean prime(int m) {
        boolean flag = true;
        if (m == 1)
            flag = false;
        else {
            for (int i = 2; i <= m / 2; i++) {
                if (m % i == 0) {
                    flag = false;
                    break;
                }
            }
        }
        return flag;
    }

}
输入两个正整数m和n(1<=m,n<=10000),输出m和n之间所有的Fibonacci数。
package day9;

import java.util.Scanner;

/*
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入两个正整数m和n(1<=m,n<=10000),输出m和n之间所有的Fibonacci数。
Fibonacci 序列(第1项起):1 1 2 3 5 8 13 21.....
要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。
例如:fib(7)的返回值是13。
输出语句:System.out.print(f+" ");
例:括号内是说明
输入:
3 (repeat=3)
1 10 (m=1, n=10)
20 100 (m=20, n=100)
1000 6000 (m=1000, n=6000)
输出:
1 1 2 3 5 8 (1到10之间的Fibonacci数)
21 34 55 89 (20到100之间的Fibonacci数)
1597 2584 4181 (1000到6000之间的Fibonacci数)
 */
public class Test44 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入运算次数:");
        int repeat = sc.nextInt();
        for (int i = 1; i <= repeat; i++) {
            System.out.println("请输入范围:(例如:a b)");
            int m = sc.nextInt();
            int n = sc.nextInt();
            for (int j = 1; j <= n; j++) {
                int f = fib(j);
                if (f >= m && f <= n)
                    System.out.print(f + " ");
            }
            System.out.println();
        }
    }

    private static int fib(int n) {
        int sum = 0, a = 1, b = 1;
        if (n == 1 || n == 2)
            sum = 1;
        else {
            for (int i = 3; i <= n; i++) {
                sum = a + b;
                a = b;
                b = sum;
            }
        }
        return sum;
    }

}
要求定义并调用函数factorsum(number),它的功能是返回number的因子和。
package day9;

import java.util.Scanner;

/*
输入两个正整数m和n(1<=m, n<=1000),输出m到n之间的所有完数(完数就是因子和与它本身相等的数)。
要求定义并调用函数factorsum(number),它的功能是返回number的因子和。
例如:factorsum(12)的返回值是16(1+2+3+4+6)。  // 我不理解为什么没这个数本身,若包含这个数本身
输出语句:System.out.print(i+" ");           //  factorsum()中只需改为i=1和sum += number
例:括号内是说明
输入:
2 (repeat=2)
20 500 (m=100, n=400)
1 100 (m=1, n=100)
输出:
28 496
1 6 28
*/
public class Test45 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入运算次数:");
        int repeat = sc.nextInt();
        for (int i = 1; i <= repeat; i++) {
            System.out.println("请输入范围:(例如:a b)");
            int m = sc.nextInt();
            int n = sc.nextInt();
            for (int j = m; j <= n; j++) {
                if (factorsum(j) == j)
                    System.out.print(j + " ");
            }
            System.out.println();
        }
    }

    private static int factorsum(int number) {
        int sum = 0;
        for (int i = 2; i <= number / 2; i++) {
            if (number % i == 0)
                sum += i;
        }
        sum += 1;
        return sum;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

完美的BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值