-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIsPrime.java
More file actions
38 lines (32 loc) · 1.37 KB
/
Copy pathIsPrime.java
File metadata and controls
38 lines (32 loc) · 1.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package dayNine;
import java.util.ArrayList;
import java.util.stream.Collectors;
/**
*Defina uma função que recebe um argumento inteiro e retorna um valor lógico true, falsedependendo se o inteiro é primo.
*
* Segundo a Wikipédia, um número primo (ou um primo) é um número natural maior que 1aquele que não possui divisores positivos além de 1ele mesmo.
*
* Requisitos
* Você pode assumir que receberá uma entrada de valor inteiro.
* Você não pode assumir que o inteiro será somente positivo. Você pode receber números negativos também ( ou 0).
* NOTA sobre desempenho : Não há otimizações sofisticadas necessárias, mas ainda assim as soluções mais triviais podem ter tempo limite. Os números vão até 2^31 (ou similar, dependendo da linguagem). Fazer um loop até n, ou n/2, será muito lento.
*/
public class IsPrime {
public static boolean isPrime(int num) {
ArrayList<Integer> divisors = new ArrayList<>();
if(num > 1){
for(int i = 1; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
divisors.add(i);
}
}
for(Integer divisor : divisors){
if(divisors.size() <= 2){
return divisor != num || divisor != 1 ? false : true;
}
}
}else {
return false;
}
}
}