Java第二次作业:完数相关 字符串小写转大写 可逆素数(数字和字符串的相互转换)

1、
【问题描述】
编程找出m~n之间的所有完数,m和n为从键盘输入的两个整数。一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3。
【输入形式】
输入两个整数。

【输出形式】
输出两个整数之间的所有完数。

【样例输入①】
1 100

【样例输出①】
1 to 100 WanShu:
6,28,

【样例输入②】
200 500

【样例输出②】
200 to 500 WanShu:
496,

【样例说明】
输入和输出的格式要和指定格式严格匹配,否则不得分。

【评分标准】
结果完全正确得满分。

【备注】
从键盘读入整数,可以用如下代码:
Scanner in = new Scanner(System.in);
int n = in.nextInt();
使用Scanner类,需要导入import java.util.Scanner;

package learn;

import java.util.Scanner;

public class First {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int m=in.nextInt();
        int n=in.nextInt();

        System.out.println(m+" to "+n+" WanShu:");
        for(int i=m;i<=n;i++){
            if(i==wanShu(i)){
                System.out.print(i+",");
            }
        }
    }

    public static int wanShu(int i) {
        if(i==1)return 0;
        int num=0;
        int n2;
        for(int x=2;x<=Math.sqrt(i);x++){
            if(i%x==0){//eg.6%2==0 则 6%3==0 2*3==6
                num+=x;
                n2=i/x;
                if(n2!=x){//因为i%1==0 则必会出现n2==i的情况 但完数不能加上它本身
                    num+=n2;
                }
            }
        }
        return num+1;
    }
}

2、
关于String对象不可变,参考:

https://blog.csdn.net/qq_26552071/article/details/86070073?utm_source=app&app_version=5.1.1&code=app_1562916241&uLinkId=usr1mkqgl919blen

package learn;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();//String对象不可变
        StringBuilder sb=new StringBuilder();

        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) >= 'a' && s.charAt(i) <= 'z') {
                sb.append((char) (s.charAt(i)-32));//s.charAt(i)-32 结果为int类型
            }else{
                sb.append(s.charAt(i));
            }
        }
        System.out.println("result:"+sb);
    }
}

题目:
【问题描述】
从键盘输入一行英文字符串,把所有小写字母变成大写字母,其他字母和字符保持不变。

【输入形式】
输入一行字符串,含大小写。

【输出形式】
输出大写字母形式。

【样例输入①】
hello,world.

【样例输出①】
result:HELLO,WORLD.

【样例输入②】
hello,China.

【样例输出②】
result:HELLO,CHINA.

【样例说明】
输入和输出的格式要和指定格式严格匹配,否则不得分。

【评分标准】
结果完全正确得满分。

【备注】
从键盘读入字符串数据,可以用如下代码:
Scanner in = new Scanner(System.in);
String str = in.nextLine();
使用Scanner类,需要导入import java.util.Scanner;

3、
知识点:数字转字符串 字符串转数字
素数:指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。

package learn;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a=in.nextInt();
        int b=Integer.parseInt(new StringBuilder(String.valueOf(a)).reverse().toString());
        System.out.println(b);
    }
}

这样也可得到一个数各位数字的顺序颠倒后得到的数

package learn;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a=in.nextInt();
        String s=String.valueOf(a);
        String s2="";
        for(int i=s.length()-1;i>=0;i--){
            s2+=s.charAt(i);
        }

        int b=Integer.parseInt(s2);
        if(isPrime(a) && isPrime(b)){
            System.out.println("yes");
        }else {
            System.out.println("no");
        }
    }

    public static boolean isPrime(int x) {
        if(x==1 || x==2)return false;

        for(int i=2;i<=Math.sqrt(x);i++){
            if(x%i==0)return false;
        }
        return true;
    }
}

题目:
【问题描述】若将某一素数的各位数字的顺序颠倒后得到的数仍是素数,则此素数称为可逆素数。编写一个判断某数是否可逆素数的函数,在主函数中输入一个整数,再调用此函数进行判断
【输入形式】用户在第一行输入一个整数。
【输出形式】程序在下一行输出yes或是no,yes表示此数是可逆素数,no表示不是。用户输入的数必须为正整数。注意:yes或是no全是小写输出。
【样例输入】23
【样例输出】no
【样例说明】用户输入23,23各位数字颠倒之后得到32,23是素数,但32不是素数,所以23不是可逆素数。
【评分标准】结果完全正确得满分。

4、
【问题描述】

请编写一个方法实现如下功能: 输出任意三个整数 a,b,c中最大的一个,并打印出来。

【输入形式】

Please input the first number:

Please input the second number:

Please input the third number:

【输出形式】

The maximum number is:

【输入样例】

5

7

10

【输出样例】

10

【评分标准】
结果完全正确得20,每个测试点4分。

package learn;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("Please input the first number:");
        int f=in.nextInt();
        System.out.println("Please input the second number:");
        int s=in.nextInt();
        System.out.println("Please input the third number:");
        int t=in.nextInt();

        int max=f;
        if(max<s)max=s;
        if(max<t)max=t;
        System.out.println("The maximum number is:"+max);
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值