经典算法


1.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?   

//这是一个菲波拉契数列问题


public class lianxi01{
public static void main(String[] args){
System.out.println("第1个月数量:1");
System.out.println("第2个月数量:1");
int f1=1,f2=1,f,M=24;
for(int i=3;i<=M;i++)
{
f=f1*2;f=f+f2;f=f-f1;//f=f1+f2;
f1=f2;
f2=f;
System.out.println("第"+i+"月数量:"+f);
}
}
}

//Analyse:第a个月的兔子,在第a2个月都能翻倍,而第a2个月的兔子还包括了a个月的一部分在a1个月生下的这一部分(这部分数量在a2个月是不变的因为其还不能生产.所以(a2)=(a*2)+(a1-a)=a+a1;


2.题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。

public class lianxi02{
public static void main(String arg[]){
int b1,b2,b3;
for(int i=100;i<1000;i++){
b1=i/100;
b2=i%100/10;
b3=i%10;
if((b1*b1*b1+b2*b2*b2+b3*b3*b3)==i)
System.out.println(i);
}
}
}

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


import java.util.*;


public class lianxi03{
public static void main(String arg[]){
Scanner s=new Scanner(System.in);
System.out.print("Please input an int:");
int n = s.nextInt();
int k=2;
System.out.print(n+"=");
while(k<=n){
if(k==n){
System.out.println(n);
break;
}else if(n%k==0){
System.out.print(k+"*");
n=n/k;
}else
k++;
}
}
}


4.题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。  

import java.util.*;
public class lianxi04{
public static void main(String args[]){
int x;
char grade;
Scanner s= new Scanner(System.in);
System.out.print("Please input the score:");
x=s.nextInt();
grade=x>=90?'A':x>=60?'B':'C';
System.out.println("The grade is:"+grade);
}
}


5.题目:输入两个正整数m和n,求其最大公约数和最小公倍数。   
/**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /


import java.util.*;
public class lianxi05{
public static void main(String args[]){
int a,b,m,n;
Scanner s= new Scanner(System.in);
System.out.print("Please input an integer:");
a=s.nextInt();
System.out.print("Please input another integer:");
b=s.nextInt();
deff cd =new deff();
m=cd.deff(a,b);
n=a*b/m;
System.out.println("最大公约数:"+m);
System.out.println("最小公倍数"+n);
}
}
class deff{
public int deff(int x,int y){
int t;
if(x<y){
t=x;
x=y;
y=t;
}
while(y!=0){
if(x==y)return x;
else{
int k=x%y;
x=y;
y=k;
}
}
return x; }
}


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


import java.util.*;
public class lianxi06 {
public static void main(String[] args) {
int digital = 0;
int character = 0;
int other = 0;
int blank = 0;
     char[] ch = null;
     Scanner sc = new Scanner(System.in);
     String s = sc.nextLine();
     ch = s.toCharArray();
     for(int i=0; i<ch.length; i++) {
      if(ch[i] >= '0' && ch[i] <= '9') {
       digital ++;
      } else if((ch[i]>= 'a' && ch[i] <= 'z') || ch[i] > 'A' && ch[i] <= 'Z') {
       character ++;
      } else if(ch[i] == ' ') {
       blank ++;
      } else {
       other ++;
      }
      }
     System.out.println("数字个数: " + digital);
     System.out.println("英文字母个数: " + character);
     System.out.println("空格个数: " + blank);
     System.out.println("其他字符个数:" + other );
}
}


7.题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

import java.util.*;
public class lianxi07{
public static void main(String args[]){
long a,b=0L,sum=0L;
Scanner s=new Scanner(System.in);
System.out.print("数字a的值:");
a = s.nextInt();
System.out.print("项数:");
int m=s.nextInt();
int i=0;
while(i<m){
b=a+b;
sum=sum+b;
a=a*10;
i++;
}
System.out.print(sum);
}
}

8.使用Java语言编写代码,将一个正整数分解质因数,例如:输入90,打印输出90=2*3*3*5。


import java.util.Scanner;


/*使用Java语言编写代码,将一个正整数分解质因数,例如:输入90,打印输出90=2*3*3*5。*/




public class Math {
public static void main(String []args){
int n,i;
System.out.println("\nPlease input a number:\n");
Scanner input = new Scanner(System.in);
n = input.nextInt();
System.out.println(n);
for(i=2;i<=n;i++){
while(n!=i){
if(n%i==0){
System.out.print(i+"x");
n=n/i;
}else {
break;
}
}
}
System.out.println(n);
}


}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值