读入一个整数,统计并输出该数中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;
}
}