Überprüfen Sie n^2 – m^2 ist eine Primzahl oder nicht
Gegeben seien zwei ganze Zahlen n und m. Überprüfen Sie n^2 – m^2 ist eine Primzahl oder nicht. n und m können sehr groß werden.
Beispiele:
Input : n = 6, m = 5 Output : YES Input : n = 16, m = 13 Output : NO
Eine einfache Lösung besteht darin, zuerst n^2 – m^2 zu berechnen und dann zu prüfen, ob es eine Primzahl ist oder nicht. n ^ 2 – m ^ 2 kann sehr groß sein – es passt möglicherweise nicht einmal in eine 64-Bit-Ganzzahl. Die Überprüfung der Primzahl darauf kann sicherlich nicht naiv durchgeführt werden.
Eine bessere Lösung ist es, n^2 – m^2 als (nm)(n+m) auszudrücken. Dies ist genau dann eine Primzahl, wenn nm = 1 und n+m eine Primzahl ist.
C++
// CPP program to find n^2 - m^2 // is prime or not. #include <bits/stdc++.h> using namespace std; // Check a number is prime or not bool isprime(int x) { // run a loop upto square of given number for (int i = 2; i * i <= x; i++) if (x % i == 0) return false; return true; } // Check if n^2 - m^2 is prime bool isNSqMinusnMSqPrime(int m, int n) { if (n - m == 1 and isprime(m + n)) return true; else return false; } // Driver code int main() { int m = 13, n = 16; if (isNSqMinusnMSqPrime(m, n)) cout << "YES"; else cout << "NO"; return 0; }
Java
// Java program to find n^2 - m^2 // is prime or not. class GFG { // Check if a number is prime or not static boolean isprime(int x) { // run a loop upto square of given number for (int i = 2; i * i <= x; i++) if (x % i == 0) return false; return true; } // Check if n^2 - m^2 is prime static boolean isNSqMinusnMSqPrime(int m, int n) { if (n - m == 1 && isprime(m + n)) return true; else return false; } // Driver code public static void main(String [] args) { int m = 13, n = 16; if (isNSqMinusnMSqPrime(m, n)) System.out.println("YES"); else System.out.println("NO"); } } // This code is contributed // by ihritik
Python3
# Python program to find n^2 - m^2 # is prime or not. # Check a number is prime or not def isprime(x): # run a loop upto square # of given number for i in range(2, math.sqrt(x)): if (x % i == 0) : return False; return True; # Check if n^2 - m^2 is prime def isNSqMinusnMSqPrime( m, n): if (n - m == 1 and isprime(m + n)): return True; else: return False; # Driver code m = 13; n = 16; if (isNSqMinusnMSqPrime(m, n)) : print ( "YES"); else: print ("NO"); # This code is contributed # by Shivi_Aggarwal
C#
// C# program to find n^2 - m^2 // is prime or not. using System; class GFG { // Check if a number is prime or not static bool isprime(int x) { // run a loop upto square // of given number for (int i = 2; i * i <= x; i++) if (x % i == 0) return false; return true; } // Check if n^2 - m^2 is prime static bool isNSqMinusnMSqPrime(int m, int n) { if (n - m == 1 && isprime(m + n)) return true; else return false; } // Driver code public static void Main() { int m = 13, n = 16; if (isNSqMinusnMSqPrime(m, n)) Console.Write("YES"); else Console.Write("NO"); } } // This code is contributed // by Smitha
PHP
<?php //PHP program to find n^2 - m^2 // is prime or not. // Check a number is prime or not function isprime($x) { // run a loop upto square // of given number for ( $i = 2; $i * $i <= $x; $i++) if ($x % i == 0) return false; return true; } // Check if n^2 - m^2 is prime function isNSqMinusnMSqPrime($m, $n) { if ($n - $m == 1 and isprime($m + $n)) return true; else return false; } // Driver code $m = 13; $n = 16; if (isNSqMinusnMSqPrime($m, $n)) echo "YES"; else echo "NO"; // This code is contributed // by inder_verma ?>
Javascript
<script> // JavaScript program to find n^2 - m^2 // is prime or not. // Check if a number is prime or not function isprime(x) { // Run a loop upto square of given number for(var i = 2; i * i <= x; i++) if (x % i == 0) return false; return true; } // Check if n^2 - m^2 is prime function isNSqMinusnMSqPrime(m, n) { if (n - m == 1 && isprime(m + n)) return true; else return false; } // Driver Code var m = 13, n = 16; if (isNSqMinusnMSqPrime(m, n)) document.write("YES"); else document.write("NO"); // This code is contributed by Khushboogoyal499 </script>
Ausgabe:
NO
Zeitkomplexität: O(sqrt(n+m))
Falls Sie an Live-Kursen mit Experten teilnehmen möchten , beziehen Sie sich bitte auf DSA Live-Kurse für Berufstätige und Competitive Programming Live for Students .