package com.ahua.arithmetic;
/**题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
* @author Administrator
*
*/
public class ConditionOperator {
public static void main(String[] args) {
for (int i = 50; i < 100; i++) {
getLevel(i);
}
}
public static void getLevel(int score){
System.out.println(score +":"+((score>=90)?"A":((score>=60)?"B":"C")));
}
}
package com.ahua.arithmetic;
import java.util.ArrayList;
/**题目:将一个正整数分解质因数。例如:输入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的值,重复执行第一步。
* @author Administrator
*
*/
public class FenJie {
public static void main(String[] args) {
for (int i = 2; i < 150; i++) {
ArrayList<Integer> result = fenjie(i);
System.out.println(i+":"+result.toString());
}
}
/** 对某个数进行质因数分解
* @param number
* @return
*/
public static ArrayList<Integer> fenjie(int number){
ArrayList<Integer> result = new ArrayList<Integer>();
for(int j = 2; j < 150; j++){
if(number%j==0 && isPrimeNumber(j) && number>=j){
result.add(j);
ArrayList<Integer> result2 =fenjie(number/j);
for (int i = 0; i < result2.size(); i++) {
result.add(result2.get(i));
}
break;
}
}
return result;
}
/** 判断一个数是否是素数(质数)
* @param num
* @return
*/
public static boolean isPrimeNumber(int num){
int half = num/2;
for (int i = 2; i < half; i++) {
if(num%i==0){
return false;
}
}
return true;
}
}
package com.ahua.arithmetic;
/**题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:
153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
* @author Administrator
*
*/
public class FindDaffodilNumber {
public static void main(String[] args) {
for (int i = 100; i < 999; i++) {
if(isDaffodilNumber(i)){
System.out.println(i);
}
}
}
public static boolean isDaffodilNumber(int number){
int tenNum =number/10%10;
int hundredNum = number/100;
int singleNum = number%10;
int result = (int) (java.lang.Math.pow(tenNum, 3)+
java.lang.Math.pow(hundredNum, 3)+
java.lang.Math.pow(singleNum, 3));
if(result==number){
return true;
}
return false;
}
}
package com.ahua.arithmetic;
/**题目:判断101-200之间有多少个素数,并输出所有素数。
*1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
*则表明此数不是素数,反之是素数。
* @author Administrator
*
*/
public class FindPrimeNumber {
public static void main(String[] args) {
for (int i = 101; i < 200; i++) {
if(isPrimeNumber(i)){
System.out.println(i);
}
}
}
public static boolean isPrimeNumber(int num){
int half = num/2;
for (int i = 2; i < half; i++) {
if(num%i==0){
return false;
}
}
return true;
}
}
package com.ahua.arithmetic;
import java.util.Scanner;
/**题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
* @author Administrator
*
*/
public class GcdTes {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int gongyueshu = getGongyueshu(num1,num2);
int gongbeishu = getGongbeishu(num1,num2);
System.out.println(gongyueshu+":"+gongbeishu);
}
/** 两个数的最小公倍数= 两数乘积/最大公约数
* @param num1
* @param num2
* @return
*/
private static int getGongbeishu(int num1, int num2) {
return num1*num2/getGongyueshu(num1,num2);
}
/** 两数的最大公约数:大数/小数,将余数代替大数,迭代求,直到余数为0时,倍除数就是最大公约数
* @param num1
* @param num2
* @return
*/
private static int getGongyueshu(int num1, int num2) {
int a=0,b=0;
if(num1>=num2){
a = num1; b = num2;
}else{
b = num1; a = num2;
}
if(a%b==0){
return b;
}else{
int c = a%b;
return getGongyueshu(c,b);
}
}
}
package com.ahua.arithmetic;
import java.util.Scanner;
/**题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用while语句,条件为输入的字符不为'\n'.
* @author Administrator
*
*/
public class StChar {
public static void main(String[] args) {
int abcCount=0;//英文字母个数
int spaceCount=0;//空格键个数
int numCount=0;//数字个数
int otherCount=0;//其他字符个数
Scanner scan=new Scanner(System.in);
String str=scan.nextLine();
char[] ch = str.toCharArray();
for(int i=0;i<ch.length;i++){
if(Character.isLetter(ch[i])){
//判断是否字母
abcCount++;
}else if(Character.isDigit(ch[i])){
//判断是否数字
numCount++;
}else if(Character.isSpaceChar(ch[i])){
//判断是否空格键
spaceCount++;
}else{
//以上都不是则认为是其他字符
otherCount++;
}
}
System.out.println("字母个数:"+abcCount);
System.out.println("数字个数:"+numCount);
System.out.println("空格个数:"+spaceCount);
System.out.println("其他字符个数:"+otherCount);
}
}
package com.ahua.arithmetic;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.concurrent.ArrayBlockingQueue;
/**题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
* @author Administrator
*
*/
public class TestAdd {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int num1 = sc.nextInt();
while (num1<=0||num1>9) {
System.out.println("请输入一个个位数");
num1 = sc.nextInt();
}
int num2 = sc.nextInt();
while (num2<=0||num2>9) {
System.out.println("请输入一个个位数");
num2 = sc.nextInt();
}
ArrayList<Long> tempArray = new ArrayList<Long>();
for (int i = 0; i < num2; i++) {
Long temp = getNum(num1,i);
tempArray.add(temp);
}
System.out.println(tempArray);
long sum = 0L;
for (int i = 0; i < tempArray.size(); i++) {
sum += tempArray.get(i);
}
System.out.println(sum);
}
private static long getNum(int num1, int count) {
long result = num1;
for (int j = 0; j < count; j++) {
result = result*10 + num1;
}
return result;
}
}
package com.ahua.arithmetic;
public class TestRabbit {
/**题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
* 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
* @param args
*/
public static void main(String[] args) {
int a = 1;
int b = 1;
for (int i = 0; i < 12; i++) {
if(i==0 || i==1){
System.out.println(i+":"+a);
}else{
int temp = a+b;
a = b;
b = temp;
System.out.println(i+":"+temp);
}
}
}
}