Dado un número . La tarea es encontrar todos esos números menores que N y son un producto de exactamente dos números primos distintos.
Por ejemplo, 33 es el producto de dos números primos distintos, es decir, 11 * 3, mientras que números como 60 tienen tres factores primos distintos, es decir, 2 * 2 * 3 * 5.
Nota : estos números no pueden ser un cuadrado perfecto.
Ejemplos:
Entrada : N = 30
Salida : 6, 10, 14, 15, 21, 22, 26
Entrada : N = 50
Salida : 6, 10, 14, 15, 21, 22, 26, 33, 34, 35, 38, 39 , 46
Algoritmo :
- Recorra hasta N y verifique si cada número tiene exactamente dos factores primos o no.
- Ahora, para evitar la situación como 49 que tiene 7 * 7 producto de dos números primos, verifica si el número es un cuadrado perfecto o no para asegurarte de que tiene dos primos distintos.
- Si el Paso 1 y el Paso 2 satisfacen, agregue el número en la lista de vectores.
- Atraviesa el vector e imprime todos los elementos en él.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to find numbers that are product // of exactly two distinct prime numbers #include <bits/stdc++.h> using namespace std; // Function to check whether a number // is a PerfectSquare or not bool isPerfectSquare(long double x) { long double sr = sqrt(x); return ((sr - floor(sr)) == 0); } // Function to check if a number is a // product of exactly two distinct primes bool isProduct(int num) { int cnt = 0; for (int i = 2; cnt < 2 && i * i <= num; ++i) { while (num % i == 0) { num /= i; ++cnt; } } if (num > 1) ++cnt; return cnt == 2; } // Function to find numbers that are product // of exactly two distinct prime numbers. void findNumbers(int N) { // Vector to store such numbers vector<int> vec; for (int i = 1; i <= N; i++) { if (isProduct(i) && !isPerfectSquare(i)) { // insert in the vector vec.push_back(i); } } // Print all numbers till n from the vector for (int i = 0; i < vec.size(); i++) { cout << vec[i] << " "; } } // Driver function int main() { int N = 30; findNumbers(N); return 0; }
Java
// Java program to find numbers that are product // of exactly two distinct prime numbers import java.util.*; class GFG{ // Function to check whether a number // is a PerfectSquare or not static boolean isPerfectSquare(double x) { double sr = Math.sqrt(x); return ((sr - Math.floor(sr)) == 0); } // Function to check if a number is a // product of exactly two distinct primes static boolean isProduct(int num) { int cnt = 0; for (int i = 2; cnt < 2 && i * i <= num; ++i) { while (num % i == 0) { num /= i; ++cnt; } } if (num > 1) ++cnt; return cnt == 2; } // Function to find numbers that are product // of exactly two distinct prime numbers. static void findNumbers(int N) { // Vector to store such numbers Vector<Integer> vec = new Vector<Integer>(); for (int i = 1; i <= N; i++) { if (isProduct(i) && !isPerfectSquare(i)) { // insert in the vector vec.add(i); } } // Print all numbers till n from the vector Iterator<Integer> itr = vec.iterator(); while(itr.hasNext()){ System.out.print(itr.next()+" "); } } // Driver function public static void main(String[] args) { int N = 30; findNumbers(N); } } // This Code is Contributed by mits
Python 3
# Python 3 program to find numbers that are product # of exactly two distinct prime numbers import math # Function to check whether a number # is a PerfectSquare or not def isPerfectSquare(x): sr = math.sqrt(x) return ((sr - math.floor(sr)) == 0) # Function to check if a number is a # product of exactly two distinct primes def isProduct( num): cnt = 0 i = 2 while cnt < 2 and i * i <= num: while (num % i == 0) : num //= i cnt += 1 i += 1 if (num > 1): cnt += 1 return cnt == 2 # Function to find numbers that are product # of exactly two distinct prime numbers. def findNumbers(N): # Vector to store such numbers vec = [] for i in range(1,N+1) : if (isProduct(i) and not isPerfectSquare(i)) : # insert in the vector vec.append(i) # Print all numbers till n from the vector for i in range(len( vec)): print(vec[i] ,end= " ") # Driver function if __name__=="__main__": N = 30 findNumbers(N)
C#
// C# program to find numbers that are product // of exactly two distinct prime numbers using System; using System.Collections.Generic; class GFG { // Function to check whether a number // is a PerfectSquare or not static bool isPerfectSquare(double x) { double sr = Math.Sqrt(x); return ((sr - Math.Floor(sr)) == 0); } // Function to check if a number is a // product of exactly two distinct primes static bool isProduct(int num) { int cnt = 0; for (int i = 2; cnt < 2 && i * i <= num; ++i) { while (num % i == 0) { num /= i; ++cnt; } } if (num > 1) ++cnt; return cnt == 2; } // Function to find numbers that are product // of exactly two distinct prime numbers. static void findNumbers(int N) { // Vector to store such numbers List<int> vec = new List<int>(); for (int i = 1; i <= N; i++) { if (isProduct(i) && !isPerfectSquare(i)) { // insert in the vector vec.Add(i); } } // Print all numbers till n from the vector foreach(var a in vec) Console.Write(a + " "); } // Driver code public static void Main(String[] args) { int N = 30; findNumbers(N); } } // This code has been contributed by 29AjayKumar
PHP
<?php // PHP program to find numbers that are product // of exactly two distinct prime numbers // Function to check whether a number // is a PerfectSquare or not function isPerfectSquare($x) { $sr = sqrt($x); return (($sr - floor($sr)) == 0); } // Function to check if a number is a // product of exactly two distinct primes function isProduct($num) { $cnt = 0; for ($i = 2; $cnt < 2 && $i * $i <= $num; ++$i) { while ($num % $i == 0) { $num /= $i; ++$cnt; } } if ($num > 1) ++$cnt; return $cnt == 2; } // Function to find numbers that are product // of exactly two distinct prime numbers. function findNumbers($N) { // Vector to store such numbers $vec = array(); for ($i = 1; $i <= $N; $i++) { if (isProduct($i) && !isPerfectSquare($i)) { // insert in the vector array_push($vec, $i); } } // Print all numbers till n from the vector for ($i = 0; $i < sizeof($vec); $i++) { echo $vec[$i] . " "; } } // Driver Code $N = 30; findNumbers($N); // This code is contributed by ita_c
Javascript
<script> // Javascript program to find numbers that are product // of exactly two distinct prime numbers // Function to check whether a number // is a PerfectSquare or not function isPerfectSquare(x) { sr = Math.sqrt(x); return ((sr - Math.floor(sr)) == 0); } // Function to check if a number is a // product of exactly two distinct primes function isProduct(num) { var cnt = 0; for(var i = 2; cnt < 2 && (i * i) <= num; ++i) { while (num % i == 0) { num = parseInt(num / i); ++cnt; } } if (num > 1) ++cnt; return cnt == 2; } // Function to find numbers that are product // of exactly two distinct prime numbers. function findNumbers( N) { // Vector to store such numbers vec = []; for (var i = 1; i <= N; i++) { if (isProduct(i) && !isPerfectSquare(i)) { // insert in the vector vec.push(i); } } // Print all numbers till n from the vector for (var i = 0; i < vec.length; i++) { document.write(vec[i] + " "); } } // Driver function var N = 30; findNumbers(N); // This code is contributed by noob2000. </script>
6 10 14 15 21 22 26
Complejidad temporal: O( * )
Espacio auxiliar: O(n)
Publicación traducida automáticamente
Artículo escrito por Shashank_Pathak y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA