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对象不可变,参考:
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);
}
}