陈宇恒博客 - 二次根式
type: channel
link: https://chenyuheng.cn/tag/%E4%BA%8C%E6%AC%A1%E6%A0%B9%E5%BC%8F/
items: 化简整数二次根式的java程序

化简整数二次根式的java程序
type: item
date: 2013-06-12T06:45:14+00:00
description: 额 这个程序的功能真的不多 想化简二次根式也只能化简以整数为被开方数的二次根式 不过吧 由于是一个计算机程序 所以多大的数字都可以很快的化简了 不过 太大的数也是不行的 因为内存不够用在这个程序中 有两点要说 其他的看注释吧 这里面运用了以前写的求因数的java程序里的方法 再就是判断一个数字是否为整数的方法就是将这个数除以1取余 就像这样： Num%1==0; 这个是在java里的 其他语言类似好吧 现在就上代码吧： int n=in.nextInt();//接收输入的被开方的数 double ss=Math.sqrt(n); if(((ss)%1)==0){ int sqrtN=(int)ss; System.out.println("√"+sqrtN); System.exit(0); }//首先判断可不可以直接开方成整数 如果可以 则输出并退出程序 int arrLength=0; for(int i=1;i<=n;i++){ if(n%i==0){ arrLength+=1; } } int arr[]=new int[arrLength]; int j=0; for(int i=1;i<=n;i++){ if(n%i==0){ arr[j]=i; j++; } } Arrays.sort(arr);//求出被开方数的所有因数为一个数组并排序 int a=0;//新建移到跟号外的数的变量a for(int i=arr.length-1;i>=0;i--){ double Dou=Math.sqrt(arr[i]); if(i!=0){ if((Dou%1==0)&&(Dou!=1)){ //将所有因数从大到小一个个试试看开方后是否为整数 //若是 将此整数的值赋给变量a 并跳出循环 a=(int)Dou; break; } }else{ //若将所有的因数（除了1）开方后不是正整数 则直接输出输入的数的平方根并退出程序 int sqrtN=(int)n; System.out.println("√"+sqrtN); System.exit(0); } } int b=n/(a*a);//求出二次根式将最大的平方因子移出根号后剩下的数 System.out.println(a+"√"+b);//输出结果 } } 点击下载.class类文件