Java练习题

1、判断101-200之间有多少个素数,并输出所有的素数。

判断素数的方法:用一个数分别除去2到sqrt(这个数),如果能被整除,则说明这个数不是素数,反之则是素数。

 1 public class lianxi01 {
 2     public static void main(String[] args) {
 3         int count = 0;
 4         for (int i = 101; i <= 200; i++) {
 5             for (int j = 2; j <= i; j++) {
 6                 if (i % j == 0 && i == j) {
 7                     count++;
 8                     System.out.println(i);
 9                 } else if (i % j == 0 && i != j) {
10                     break;
11                 }
12             }
13         }
14                 System.out.println("素数个数是:" + count);
15     }
16 }

2、打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。

例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。

分析:利用for循环控制100-999个数,每个数分解成百位、十位、个位。

 1 public class lianxi02 {
 2     public static void main(String[] args) {
 3         int i,j=0,k;
 4         int bai,shi,ge;
 5         for(i=100;i<1000;i++){
 6             bai=i/100;        //求百位数
 7             shi=(i/10)%10;    //求十位数
 8             ge=(i%100)%10;    //求个位
 9             k=bai*bai*bai+shi*shi*shi+ge*ge*ge;
10             if(i==k){
11                 System.out.println(i);
12                 j++;
13             }
14         }
15         System.out.println("符合条件的水仙花数为:"+j);
16     }
17 }

3、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5   

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:   

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。   
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。   
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

 1 package com.clong.test;
 2 
 3 import java.util.Scanner;
 4 
 5 public class lianxi03 {
 6     public static void main(String[] args) {
 7         for (;;) {
 8             Scanner sc = new Scanner(System.in);
 9             int a, b;
10             int j = 0;
11             System.out.println("请输入一个整数:");
12             a = sc.nextInt();
13             b = a; // 保存原数
14             int age[] = new int[10]; // 用来存质因数
15             for (int i = 2; a != 1;) {
16                 if (a % i == 0) {
17                     age[j] = i;
18                     j++;
19                     a = a / i;
20                 } else {
21                     i++;
22                 }
23             }
24             System.out.print(b + "=");
25             for (int i = 0; i < j; i++) {
26                 System.out.print(age[i]);
27                 if(i<j-1)//判断是否是最后一位质因数,不是输出*
28                     System.out.print("*");
29             }
30             System.out.println();
31         }
32     }
33 }
View Code

4、题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 

 1 public class lianxi04 {
 2     public static void main(String[] args) {
 3         int abcCount = 0; // 英文字母个数
 4         int spaceCount = 0; // 空格键个数
 5         int numCount = 0; // 数字个数
 6         int otherCount = 0; // 其他字符个数
 7         Scanner scan = new Scanner(System.in);// 扫描器接受控制台的输入信息
 8         System.out.println("输入一组字符");
 9         String str = scan.nextLine(); // 取出控制台的一行信息,也就是你输入的信息
10         char[] ch = str.toCharArray(); // 把取道的字符串变成一个char数组
11         for (int i = 0; i < ch.length; i++) {
12             if (Character.isLetter(ch[i])) {    // 判断是否字母
13                 abcCount++;
14             } else if (Character.isDigit(ch[i])) {    // 判断是否数字
15                 numCount++;
16             } else if (Character.isSpaceChar(ch[i])) {    // 判断是否空格键
17                 spaceCount++;
18             } else {    // 以上都不是则认为是其他字符
19                 otherCount++;
20             }
21         }
22         System.out.println("字母个数:" + abcCount);
23         System.out.println("数字个数:" + numCount);
24         System.out.println("空格个数:" + spaceCount);
25         System.out.println("其他字符个数:" + otherCount);
26     }
27 }
View Code

 5、s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

例如2+22+222+2222+22222=24690(此时共有5个数相加),几个数相加有键盘控制。

 1 public class lianxi05 {
 2     public static void main(String[] args) {
 3         long a,b=0,sum=0;
 4         Scanner sc=new Scanner(System.in);
 5         System.out.println("输入数字a的值:");
 6         a=sc.nextLong();
 7         System.out.println("输入相加的项数:");
 8         int n=sc.nextInt();
 9         int i=0;
10         while(i<n){
11             b=b+a;
12             sum+=b;
13             a=a*10;
14             ++i;
15         }
16         System.out.println(sum);
17     }
18 }

6、一个数如果恰好等于它的因子之和,这个数就称为 “完数”

例如6=123. 编程找出1000以内的所有完数。

 1 public class lianxi06 {
 2     public static void main(String[] args) {
 3         int sum=0;
 4         for(int i=1;i<1000;i++){
 5             int a=0;
 6             for(int j=1;j<i;j++){
 7                 if(i%j==0)
 8                 a+=j;
 9             }
10             if(a==i){
11                 System.out.println(a);
12                 sum++;
13             }
14         }
15         System.out.println("共有完数:"+sum);
16     }
17 }

6
28
496
共有完数:3

7、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

 1 public class lianxi07 {
 2     public static void main(String[] args) {
 3         for(int x=1;x<10000;x++){
 4             if(Math.sqrt(x+100)%1==0){
 5                 if(Math.sqrt(x+168)%1==0){
 6                     System.out.println(x + "加100是一个完全平方数,再加168又是一个完全平方数");
 7                 }
 8             }
 9         }
10     }
11 }

 8、输出9*9口诀

 1 public class lianxi08 {
 2     public static void main(String[] args) {
 3         for(int i=1;i<10;i++){
 4             for(int j=1;j<i;j++){
 5                 System.out.print(j+"*"+i+"="+j*i+"   ");
 6                 if(j*i<10){
 7                     System.out.print(" ");
 8                 }    
 9             }
10             System.out.println();
11         }
12     }
13 }
原文地址:https://www.cnblogs.com/longc/p/5946096.html