Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 7 years ago

請幫我解釋這一段java程式

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

int num=sc.nextInt();

if(Prime(num)==0)

{

System.out.println("No prime found");

}

else

{

System.out.println(Prime(num));

}

}

static int Prime(int temp){

int i,j,d,max=0,ttemp;

ttemp=temp;

for(i=0;temp>0;i++,temp/=10);

d=i;

for(i=d;i>=0;i--){

for(j=i-1;j>=0;j--)

{

temp=ttemp%(int)Math.floor(Math.pow(10,i));

temp=temp/(int)Math.floor(Math.pow(10,j));

if((max<temp)&&(PrimeNumber(temp)))

{

max=temp;

}

}

}

return max;

}

private static boolean PrimeNumber(int temp){

int i;

if(temp==0){

return false;

}

for(i=2;i<=Math.sqrt(temp);i++){

if(temp%i==0){

return false;

}

}

return true;

}

}

這是一個找出一段字串裡面最大質數的程式

我看不懂 幫我翻譯一下 謝謝喔

Update:

for(i=d;i>=0;i--){

for(j=i-1;j>=0;j--)

{

temp=ttemp%(int)Math.floor(Math.pow(10,i));

temp=temp/(int)Math.floor(Math.pow(10,j));

if((max

Update 2:

temp)&&(PrimeNumber(temp)))

{

max=temp;

}

}

}

return max;

}

這段可以在幫我解是一下嗎

1 Answer

Rating
  • John
    Lv 7
    7 years ago
    Favorite Answer

    import java.util.Scanner;

    public class Main {

    public static void main(String[] args) {

    Scanner sc=new Scanner(System.in);

    // 鍵盤輸入

    int num=sc.nextInt();

    //如果num = 0字串中沒有prime number。否則會是最大的質數。

    if(Prime(num)==0)

    {

    System.out.println("No prime found");

    }

    else

    {

    System.out.println(Prime(num));

    }

    }

    static int Prime(int temp){

    int i,j,d,max=0,ttemp;

    ttemp=temp;

    for(i=0;temp>0;i++,temp/=10);

    // 假設輸入為98765,d會變成5因為五個位。

    d=i;

    // 然後續個續查9,8,7因為它是質數而且是最大。所以答案是7。

    for(i=d;i>=0;i--){

    for(j=i-1;j>=0;j--)

    {

    temp=ttemp%(int)Math.floor(Math.pow(10,i));

    temp=temp/(int)Math.floor(Math.pow(10,j));

    if((max<temp)&&(PrimeNumber(temp)))

    {

    max=temp;

    }

    }

    }

    return max;

    }

    // 如是質數回應是,否則不。

    private static boolean PrimeNumber(int temp){

    int i;

    if(temp==0){

    return false;

    }

    for(i=2;i<=Math.sqrt(temp);i++){

    if(temp%i==0){

    return false;

    }

    }

    return true;

    }

    }

    我的提意。

    import java.util.*;

    public class Program {

    public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in);

    int input = keyboard.nextInt(); // test data: 98876

    String value = String.valueOf(input);

    int maxPrime = Integer.MIN_VALUE;

    for (char c : value.toCharArray()) {

    int number = Integer.parseInt(String.valueOf(c));

    if (isPrime(number) && (number >= maxPrime)) {

    maxPrime = number;

    }

    }

    // if there is any prime number found in the given string...

    if (maxPrime > Integer.MIN_VALUE) {

    System.out.printf("The max prime is %d%n", maxPrime);

    } else {

    System.out.println("There is no prime number found.");

    }

    }

    private static boolean isPrime(int value) {

    if (value == 1) return false;

    if (value == 2) return true;

    int endAt = (int) Math.sqrt(value);

    for (int i = 2; i <= endAt; i++) {

    if (value % i == 0) return false;

    }

    return true;

    }}

Still have questions? Get your answers by asking now.