寻找数字平方根的Java程序,无需sqrt

585 阅读1分钟

在Java中,我们有一个Math.sqrt函数,可以返回任何给定数字的平方根。在这个Java程序中,我们将在不使用sqrt函数的情况下找到平方根。正如你所看到的,我们使用do while循环来计算它。

package RemainingSimplePrograms;

import java.util.Scanner;

public class SqrRootOfNum1 {

private static Scanner sc;

public static void main(String\[\] args) {
	
	sc = new Scanner(System.in);
	
	System.out.print("Please Enter Any Number to find Square Root = ");
	double num = sc.nextDouble();
	
	double temp, squareroot;
	
	squareroot = num / 2;
	
	do {
		temp = squareroot;
		squareroot = (temp + (num / temp))/2;
	} while((temp - squareroot) != 0);
	
	System.out.println("\\nThe Square Root of a Number without sqrt = " + squareroot);
}

image.png

在这个Java例子中,我们正在计算每个成员与给定数字相比的平方。如果它小于给定的数字,就递增数值。

package  RemainingSimplePrograms;

import java.util.Scanner;

public class SqrRootOfNum2 { 
private static Scanner sc;
public static void main(String\[\] args) { 
        sc = new Scanner(System.in);
	System.out.print("Please Enter Any Number = ");
	int num = sc.nextInt();
	
	int squareroot = squareRootWithoutsqrt(num);
	
	System.out.println("\\nThe Square Root of a Number without sqrt = " + squareroot);
}

public static int squareRootWithoutsqrt(int num) {
	if(num < 2) {
		return num;
	}
	int mid, start = 1, end = num;
	while(start <= end) {
		mid = (start + end) /2;
		
		if(mid \* mid == num) {
			return mid;
		} else if(mid \* mid > num) {
			end = mid - 1;
		} else {
			start = mid + 1;
		}
	}
	return end;
}
Please Enter Any Number = 986

The Square Root of a Number without sqrt = 31

寻找数字平方根的Java程序,无需sqrt

在这个Java例子中,我们使用二进制搜索来寻找平方根。

package RemainingSimplePrograms;

import java.util.Scanner;

public class SqrRootOfNum3 { 
private static Scanner sc; 
public static void main(String\[\] args) { 
        sc = new Scanner(System.in);

	System.out.print("Please Enter Any Number = ");
	int num = sc.nextInt();
	
	int squareroot = squareRootWithoutsqrt(num);
	
	System.out.println("\\nThe Square Root of a Number without sqrt = " + squareroot);
}

public static int squareRootWithoutsqrt(int num) {
	if(num < 2) {
		return num;
	}
	
	int sqrtVal = 1;
	while(sqrtVal \* sqrtVal <= num) {
		sqrtVal++;
	}
	return sqrtVal - 1;
}
Please Enter Any Number = 97

The Square Root of a Number without sqrt = 9