java 带根号的开平方

一般我们都使用Math.sqrt()来计算一个数n的平方根,但是结果是一个小数。在做数学题的时候我们是要保留根号的。这里提供带根号的开平方方法

//开平方,数组第一个放平方根前面的系数,第二个放根号里面无法开方的数
	public static int[] mySqrt(int n)
	{
		int ints[]=new int[2];
		for(int i=(int)Math.sqrt(n);i>=2;i--)
		{
			if(n%(i*i)==0)
			{
				ints[0]=i;
				n=n/(i*i);
				break;
			}
		}
		if(n>1)
			ints[1]=n;
		return ints;
	}

测试方法:

package Ctojava;

import java.util.Scanner;

public class Sqrt
{
	public static void main(String[] args)
	{
		Scanner scanner=new Scanner(System.in);
		int n=0;
		n=scanner.nextInt();
		System.out.print("sqrt("+n+")=");
		int strs[]=mySqrt(n);
		if(strs[0]!=0)
			System.out.print(strs[0]);
		if(strs[1]!=0)
			System.out.print("sqrt("+strs[1]+")");
		
	}
	//开平方,数组第一个放平方根前面的系数,第二个放根号里面无法开方的数
	public static int[] mySqrt(int n)
	{
		int ints[]=new int[2];
		for(int i=(int)Math.sqrt(n);i>=2;i--)
		{
			if(n%(i*i)==0)
			{
				ints[0]=i;
				n=n/(i*i);
				break;
			}
		}
		if(n>1)
			ints[1]=n;
		return ints;
	}
}
运行测试1:

16
sqrt(16)=4
运行测试2:

18
sqrt(18)=3sqrt(2)


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值