千锋教育-做有情怀、有良心、有品质的IT职业教育机构

你所在的位置:首页 > 行业动态

成都Java培训分享经典的数学问题用编程来解答

时间:2018-03-14 16:18:45 来源:千锋教育成都校区  作者:千锋

   很多公司为了考验面试者的逻辑思维能力和基础能力,经常会给出一些不那么使用但是却有些难度的经典数学问题,面对这些问题时,很多熟悉实战的朋友可能反而会一脸懵圈。下边,千锋成都java培训班的老师就从题库中挑出5道来,给大家讲解一番。

图片6.jpg

  1.指数计算问题

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

  程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....

  public class Prog1{

  public static void main(String[] args){

  int n = 10;

  System.out.println("第"+n+"个月兔子总数为"+fun(n));

  }

  private static int fun(int n){

  if(n==1 || n==2)

  return 1;

  else

  return fun(n-1)+fun(n-2);

  }

  }

  2.指定范围包含的素数

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

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

  public class Prog2{

  public static void main(String[] args){

  int m = 1;

  int n = 1000;

  int count = 0;

  //统计素数个数

  for(int i=m;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.水仙花数

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

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

  public class Prog3{

  public static void main(String[] args){

  for(int i=100;i<1000;i++){

  if(isLotus(i))

  System.out.print(i+" ");

  }

  System.out.println();

  }

  //判断水仙花数

  private static boolean isLotus(int lotus){

  int m = 0;

  int n = lotus;

  int sum = 0;

  m = n/100;

  n -= m*100;

  sum = m*m*m;

  m = n/10;

  n -= m*10;

  sum += m*m*m + n*n*n;

  if(sum==lotus)

  return true;

  else

  return false;

  }

  }

  4.分解质因数

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

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

  (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

  (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行步。

  (3)如果n不能被k整除,则用k+1作为k的值,重复执行步。

  public class Prog4{

  public static void main(String[] args){

  int n = 13;

  decompose(n);

  }

  private static void decompose(int n){

  System.out.print(n+"=");

  for(int i=2;i

  while(n%i==0 && n!=i){

  n/=i;

  System.out.print(i+"*");

  }

  if(n==i){

  System.out.println(i);

  break;

  }

  }

  }

  }

  5.条件运算符使用

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

  程序分析:(a>b)?a:b这是条件运算符的基本例子。

  public class Prog5{

  public static void main(String[] args){

  int n = -1;

  try{

  n = Integer.parseInt(args[0]);

  }catch(ArrayIndexOutOfBoundsException e){

  System.out.println("请输入成绩");

  return;

  }

  grade(n);

  }

  //成绩等级计算

  private static void grade(int n){

  if(n>100 || n<0)

  System.out.println("输入无效");

  else{

  String str = (n>=90)?"分,属于A等":((n>60)?"分,属于B等":"分,属于C等");

  System.out.println(n+str);

  }

  }

  }

  看过以上的内容介绍你的思路是不是一下就打开了呢?如果想深入的学习,欢迎前来官网咨询。

热帖推荐

  • 成都地址:成都市武侯区科华北路62号力宝大厦N(北楼)18楼
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 北京天丰利校区:北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术广场服务楼2层、南区服务楼2层
    咨询电话:400-654-7778 010-82790226-801
    面授课程:iOS培训、Android培训、HTML5培训、UI培训、PHP培训、JavaEE培训、好程序员
  • 深圳科技园校区:深圳市南山区科苑南路高新技术产业园R3-B栋5层
    深圳大学城校区:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
    深圳西部硅谷校区:深圳市宝安区宝安大道5010号西部硅谷B座A605-619
    咨询电话:0755-86681178/9-801
    面授课程:iOS培训、Android培训、HTML5培训、UI培训、PHP培训、JavaEE培训、好程序员
  • 上海地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-627-7899 021-65025129-602
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、好程序员
  • 郑州地址:郑州市金水区纬五路21号河南教育综合楼(经纬中学楼)6/7/8层
    咨询电话:0371-55911950 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 广州地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 大连地址:大连市甘井子区软件园路2号B8座二楼
    咨询电话:0411-39026086 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 武汉地址:武汉市东新区光谷大道77号金融港B26栋9楼
    咨询电话:027-59905909 027-59905908 027-59905902
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 西安南二环校区:西安市二环南路西段60号永安大厦4层
    西安科技园校区:西安市雁塔区高新六路52号立人科技园C座西区4层
    咨询电话:029-85260160 029-85261030 029-85260960
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 杭州地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:0571-86893632 010-82790226-801
    面授课程:iOS课程培训、Android课程培训
  • 青岛校区地址:青岛市市南区金坛路17号青岛职业技术南校区实训楼A4层
    咨询电话:0532-80910752/3 010-82790226-801
    面授课程:iOS课程培训、Android课程培训
  • 扫码匿名提建议
    直达CEO信箱