Computer >> Máy Tính >  >> Lập trình >> Java

Chương trình Java để tìm thừa số nguyên tố lớn nhất của một số

Sau đây là mã Java để tìm thừa số nguyên tố lớn nhất của một số -

Ví dụ

import java.io.*;
import java.util.*;
public class Demo{
   static long maxPrimeFactors( long val){
      long max_prime = -1;
      while (val % 2 == 0) {
         max_prime = 2;
         val >>= 1;
      }
      for (int i = 3; i <= Math.sqrt(val); i += 2){
         while (val % i == 0){
            max_prime = i;
            val = val / i;
         }
      }
      if (val > 2)
      max_prime = val;
      return max_prime;
   }
   public static void main(String[] args){
      int val = 148592;
      System.out.println("The largest prime factor of 148592 is ");
      System.out.println(maxPrimeFactors(val));
      val = 890654;
      System.out.println("The largest prime factor of 890654 is ");
      System.out.println(maxPrimeFactors(val));
   }
}

Đầu ra

The largest prime factor of 148592 is
251
The largest prime factor of 890654 is
4591

Một lớp có tên Demo chứa một hàm tĩnh kể một giá trị và điều kiện 'while' được xác định, điều kiện này sẽ kiểm tra xem mô-đun giá trị 2 có phải là 0. Nếu nó là 0, thì một biến (max_prime) được gán giá trị 2. Nếu không, nó sẽ được dịch chuyển bit phải bằng 1. Một lần nữa, vòng lặp 'for' được lặp qua các phần tử từ 3 đến căn bậc hai của giá trị và tăng lên 2 sau mỗi lần lặp.

Bây giờ, vòng lặp ‘while’ sẽ kiểm tra xem trình lặp mô-đun giá trị có bằng 0. Nếu có, một biến (max_prime) được gán giá trị hiện đang được lặp. Giá trị được chia cho giá trị được lặp lại. Nếu giá trị này lớn hơn 2, thì giá trị này (max_prime) được gán cho một biến có tên max_prime. Cái này được trả lại. Trong hàm main, một giá trị nguyên được xác định và thừa số nguyên tố lớn nhất được tìm ra bằng cách gọi hàm với đối số cụ thể.