Advertisement
matheus_monteiro

Fibonacci?

Sep 6th, 2022
752
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.11 KB | None | 0 0
  1. import java.util.*;
  2. import java.math.BigInteger;
  3.  
  4. class Main {
  5.     public static void main(String[] args) {
  6.         Scanner sc = new Scanner(System.in);
  7.         BigInteger n = sc.nextBigInteger();
  8.  
  9.         boolean isFib = true;
  10.        
  11.         for(int p = 1; p <= 100; ++p) {
  12.             BigInteger prime = BigInteger.valueOf(p);
  13.             if(prime.isProbablePrime(10)) {
  14.                 int r = n.mod(prime).intValue();
  15.                 int val1 = (5 * r * r - 4) % p;
  16.                 int val2 = (5 * r * r + 4) % p;
  17.                 if(!(val1 == 0 || modExp(val1, (p - 1) / 2, p) == 1 || val2 == 0 || modExp(val2, (p - 1) / 2, p) == 1)) {
  18.                     isFib = false;
  19.                 }
  20.             }
  21.         }
  22.  
  23.         if(isFib) {
  24.             System.out.println("SIM");
  25.         } else {
  26.             System.out.println("NAO");
  27.         }
  28.     }
  29.  
  30.     static int modExp(int a, int e, int m) {
  31.         int ans = 1;
  32.         while(e != 0) {
  33.             if((e & 1) != 0)
  34.                 ans = (ans * a) % m;
  35.             a = (a * a) % m;
  36.             e /= 2;
  37.         }
  38.         return ans;
  39.     }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement