#include #include /* Napisz funkcje, ktora dla liczby calkowitej dodatniej zwroci iloczyn dwoch (roznych) najwiekszych liczb pierwszych, o ile takie istnieja lub -1 w przeciwnym przypadku. Przyklad: Dla liczby 12 funkcja powinna zwrocic 77 = 11 * 7 */ //check if number is prime bool isPrime(int num) { if (num <= 1) return false; //0,1 are not primes for (int i = 2; i * i <= num; i++) { //all what wee need is modulo division if (num % i == 0) { return false; } } return true; } //find the largest prime int largestPrime(int num) { int largest = 0; //going down from n and checking if i is prime for (int i = num; i >= 2; i--) { if (isPrime(i)) { largest = i; break; } } return largest; } long long productOfLargestPrimes(int num) { int firstLargest = largestPrime(num); printf("%d * ", firstLargest); //new boundary is the largest prime - 1 int secondLargest = largestPrime(firstLargest - 1); printf("%d ", secondLargest); if (firstLargest > 0 && secondLargest > 0) { return (long long)firstLargest * secondLargest; } else { return -1; } } int main() { int number; printf("Podaj liczbe calkowita: "); scanf("%d", &number); //int number = 12; printf("\nIloczyn dwoch najwiekszych liczb pierwszych z liczby %d to ", number); long long int result = productOfLargestPrimes(number); printf(" = %lld\n", result); return 0; }