Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

โปรแกรม Java เพื่อค้นหาตัวประกอบเฉพาะที่ใหญ่ที่สุดของตัวเลข


ต่อไปนี้เป็นโค้ด Java เพื่อค้นหาตัวประกอบเฉพาะที่ใหญ่ที่สุดของตัวเลข -

ตัวอย่าง

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));
   }
}

ผลลัพธ์

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

คลาสชื่อ Demo มีฟังก์ชันสแตติกที่แสดงค่า และกำหนดเงื่อนไข 'while' ซึ่งจะตรวจสอบว่าโมดูลัสค่า 2 เป็น 0 หรือไม่ หากเป็น 0 ตัวแปร (max_prime) จะได้รับการกำหนดค่าเป็น 2 มิฉะนั้น บิตที่ถูกต้องจะเปลี่ยน 1 อีกครั้ง วนซ้ำ 'for' ซ้ำเหนือองค์ประกอบจาก 3 เป็นรากที่สองของค่า และเพิ่มขึ้น 2 หลังจากการวนซ้ำทุกครั้ง

ตอนนี้ วนรอบ 'while' จะตรวจสอบว่าตัววนโมดูลัสของค่าเป็น 0 หรือไม่ ถ้าใช่ ตัวแปร (max_prime) จะได้รับการกำหนดค่าที่กำลังมีการวนซ้ำ ค่าจะถูกหารด้วยค่าที่วนซ้ำ หากค่านี้มากกว่า 2 ค่านี้ (max_prime) จะถูกกำหนดให้กับตัวแปรชื่อ max_prime นี้จะถูกส่งกลับ ในฟังก์ชันหลัก ค่าจำนวนเต็มถูกกำหนดและหาตัวประกอบเฉพาะที่ใหญ่ที่สุดโดยการเรียกใช้ฟังก์ชันด้วยอาร์กิวเมนต์เฉพาะ