java算法编程题(60题)题⽬
1、兔⼦问题
import java.util.Scanner;
/*
* 题⽬:有⼀对兔⼦,从出⽣后第3个⽉起每个⽉都⽣⼀对兔⼦,⼩兔⼦长
* 到第三个⽉后每个⽉⼜⽣⼀对兔⼦,假如兔⼦都不死,问每个⽉的兔⼦总数为多少?
* 程序分析:实际⽉份  1    2    3    4    5    6    7    8
*            幼仔对数  1    0    1    1    2    3    5    8
*            成兔对数  0    1    1    2    3    5    8    13
*            总体对数  1    1    2    3    5    8    13    21
*            幼仔对数=前⽉成兔对数
*            成兔对数=前⽉成兔对数+前⽉幼仔对数
*            总体对数=本⽉成兔对数+本⽉幼仔对数
*            可以看出幼仔对数、成兔对数、总体对数都构成了⼀个数列。这个数
*            列有关⼗分明显的特点,那是:前⾯相邻两项之和,构成了后⼀项。
*/
public class Test01 {
@SuppressWarnings("resource")
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请输⼊⽉份:");
marginnote3值得买吗int Int();
/
/因为求的是总数,所以乘2,如果是对数就不需要乘2
System.out.println("第"+month+"⽉免⼦总数为"+recursive(month)*2);
}
/**递归实现
* @param n
* @return
*/
public static int recursive(int n){
if(n==1||n==2){
return1;
}else{
return recursive(n-1)+recursive(n-2);
}
}
/**for循环实现
* @param n
* @return
*/
public static int fibonacciSequence(int n){
if(n<0){
return-1;
}
if(n==1||n==2){
return1;
}
int result =0;
int prevFirst =1;//结果数前第⼀个数
int prevSecond =1;//结果数前⼆个数
for(int i=3;i<=n;i++){
result = prevFirst + prevSecond;
prevSecond = prevFirst;//新的第⼆个数就是原先的第⼀个数
prevFirst = result;//新的第⼀个数就是结果数,这⼀句必须放在prevSecond = prevFirst之后
}
return result;
}
}
2、求素数
/*
* 题⽬:判断101-200之间有多少个素数,并输出所有素数。
* 程序分析:判断素数的⽅法:⽤⼀个数分别去除2到sqrt(这个
* 数),如果能被整除,则表明此数不是素数,反之是素数。
*/
resample函数原理public class Test02 {
public static void main(String[] args){
/
*
//⽅法⼀
int count=0;
for(int i=101;i<=200;i++){
boolean flag=false;
for(int j=2;j<=Math.sqrt(i);j++){
if(i%j==0){
flag=false;
break;
}else{
flag=true;
}
}
if(flag==true){
count++;
System.out.println(i);
}
}
System.out.println("素数个数为:"+count);
*/
//⽅法⼆
int m =101;
int n =200;
int count =0;
//统计素数个数
for(int i=m;i<n;i++){
if(isPrime(i)){
count++;
System.out.print(i+" ");
if(count%10==0){
System.out.println();
}
}
}
System.out.println();
System.out.println("在"+m+"和"+n+"之间共有"+count+"个素数"); }
private static boolean isPrime(int n){
boolean flag =true;
if(n==1){
flag =false;
}else{
for(int i=2;i<=Math.sqrt(n);i++){
if((n%i)==0|| n==1){
flag =false;
break;
}else{
flag =true;
}
}
}
return flag;
}
}
3、求素数
/*
* 题⽬:求100之内的素数
* 质数⼜称素数,有⽆限个。质数定义为在⼤于1的⾃然数中,除 * 了1和它本⾝以外不再有其他因数,这样的数称为质数。
*/
public class Test03 {
public static void main(String[] args){
//⽅法⼀,使⽤除sqrt(n)的⽅法求出的素数不包括2和3 boolean b=false;
System.out.println("100以内的素数有:");
System.out.print(2+" ");
System.out.print(3+" ");
//因为4以上的偶数都能被2整除,所以循环排除偶数
for(int i=3;i<=100;i+=2){
for(int j=2;j<=Math.sqrt(i);j++){
if(i%j==0){
b=false;
break;
}else{
b=true;c语言基础知识大一
}
}
if(b==true){
System.out.print(i+" ");
}
}
//⽅法⼆:使⽤除1位素数得2位⽅法,运⾏效率⾼通⽤性差。  System.out.println("");
int[] a=new int[]{2,3,5,7};
for(int i=0;i<4;i++){
System.out.print(a[i]+" ");
}
boolean b2=false;
for(int i=11;i<100;i+=2){
for(int j=0;j<4;j++){
if(i%a[j]==0){
b2=false;
break;
}else{
b2=true;
}
}
if(b2==true){
新闻网站有哪些
System.out.print(i+" ");
}异步通信的工作原理
}
}
}
4、分解质因数
/*
* 题⽬:将⼀个正整数分解质因数。例如:输⼊90,打印出90=2*3*3*5。
* 程序分析:对n进⾏分解质因数,应先到⼀个最⼩的质数k,然后按下述步* 骤完成:
* (1)如果这个质数恰等于(⼩于的时候,继续执⾏循环)n,则说明分解质因数* 的过程已经结束,另外打印出即可。
* (2)但n能被k整除,则应打印出k的值,并⽤n除以k的商,作为新的正整数
* n.重复执⾏第⼆步。
* (3)如果n不能被k整除,则⽤k+1作为k的值,重复执⾏第⼀步。
*/
public class Test04 {
public static void main(String[] args){
System.out.println("请输⼊⼀个正整数:");
@SuppressWarnings("resource")
Scanner in=new Scanner(System.in);
int Int();
int k=2;
System.out.print(n+"=");
while(k<=n){
if(k==n){
System.out.print(n);
break;
}else if(n%k==0){
System.out.print(k+"*");
n=n/k;
}else{
k++;
}
}
}
5、成绩问题
/*
* 题⽬:利⽤条件运算符的嵌套来完成此题:学习
* 成绩> =90分的同学⽤A表⽰,60-89分之
* 间的⽤B表⽰,60分以下的⽤C表⽰。
*
* 知识点:
* 3⽬运算符: 当某个变量的值来源于某个判定的结果,⽽决定赋予特定的少量值。* if else:所有的判定都可以⽤它来解决
* switch case:
* 1.switch 只判定1次(整个表达式只有⼀个结果:true)
* 2.当某个case为符合值,那么表达式switch就为true
*  就直接执⾏case后⾯的代码,当碰到第⼀个break才结束
* 3.switch(变量):整形,char,枚举.
*    //case 值: 值不可以是表达式例如 >90. 值只能是例如 5,6等。
*  //case 中的值不可以重复
*/
public class Test05 {
public static void main(String[] args){
//⽅法⼀:
@SuppressWarnings("resource")
Scanner in=new Scanner(System.in);
System.out.println("请输⼊⼀个成绩:");
int Int();
/*
if(score>=90){
System.out.println("成绩为A");
}else if(score>=60){
System.out.println("成绩为B");
}else{
System.out.println("成绩为C");
}
*/
char grade;
grade=score>=90?'A'
:score>=60?'B'
:'C';
System.out.println("成绩为:"+grade);
/
/⽅法⼆:
//  getResults();
}
@SuppressWarnings("resource")
public static void getResults(){
Scanner sc =new Scanner(System.in);
System.out.println("请您输⼊分数:0-100");
int Int();
int i=(num>=0&&num<=100)?num/10:-1;//整除
String s=null;//对象类型可以赋予 null 的初始值
switch(i){//switch(变量)
case10:
case9:  s="A";break;
case8:
case7:
case6:  s="B";break;
case-1:  s="输⼊的分数有问题";break;
default://当上门的case没有符合的值,就执⾏default
java经典上机编程题s="C";break;
}
System.out.println(s);
}
}
6、最⼤公约数和最⼩公倍数
import java.util.Scanner;
/*
* 题⽬:输⼊两个正整数m和n,求其最⼤公约数和最⼩公倍数。
*/
public class Test06 {
public static void main(String[] args){

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。