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 }
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 }
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=1+2+3. 编程找出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 }