给定两个数字L和R表示范围[L,R] ,任务是打印该范围内的所有素数亚当整数。
注意:一个既是素数又是adam的数字称为素数adam数。
例子:
Input: L = 5, R = 100
Output: 11 13 31
Explanation:
The three numbers 11, 13, 31 are prime. They are also adam numbers.
Input: L = 70, R = 50
Output: Invalid Input
方法:此问题中使用的想法是首先检查数字是否为质数。如果是素数,请检查其是否为亚当数:
- 迭代给定范围[L,R] 。
- 对于每个数字,请检查数字是否为质数。
- 如果是素数,请检查该数字是否为亚当数。
- 如果数字既是素数又是亚当数,则打印该数字。
下面是上述方法的实现:
C++
// C++ program to find all prime
// adam numbers in the given range
#include
using namespace std;
int reverse(int a)
{
int rev = 0;
while (a != 0)
{
int r = a % 10;
// Reversing a number by taking
// remainder at a time
rev = rev * 10 + r;
a = a / 10;
}
return (rev);
}
// Function to check if a number
// is a prime or not
int prime(int a)
{
int k = 0;
// Iterating till the number
for(int i = 2; i < a; i++)
{
// Checking for factors
if (a % i == 0)
{
k = 1;
break;
}
}
// Returning 1 if the there are
// no factors of the number other
// than 1 or itself
if (k == 1)
{
return (0);
}
else
{
return (1);
}
}
// Function to check whether a number
// is an adam number or not
int adam(int a)
{
// Reversing given number
int r1 = reverse(a);
// Squaring given number
int s1 = a * a;
// Squaring reversed number
int s2 = r1 * r1;
// Reversing the square of the
// reversed number
int r2 = reverse(s2);
// Checking if the square of the
// number and the square of its
// reverse are equal or not
if (s1 == r2)
{
return (1);
}
else
{
return (0);
}
}
// Function to find all the prime
// adam numbers in the given range
void find(int m, int n)
{
// If the first number is greater
// than the second number,
// print invalid
if (m > n)
{
cout << " INVALID INPUT " << endl;
}
else
{
int c = 0;
// Iterating through all the
// numbers in the given range
for(int i = m; i <= n; i++)
{
// Checking for prime number
int l = prime(i);
// Checking for Adam number
int k = adam(i);
if ((l == 1) && (k == 1))
{
cout << i << "\t";
}
}
}
}
// Driver code
int main()
{
int L = 5, R = 100;
find(L, R);
return 0;
}
// This code is contributed by Amit Katiyar
Java
// Java program to find all prime
// adam numbers in the given range
import java.io.*;
class GFG {
public static int reverse(int a)
{
int rev = 0;
while (a != 0) {
int r = a % 10;
// reversing a number by taking
// remainder at a time
rev = rev * 10 + r;
a = a / 10;
}
return (rev);
}
// Function to check if a number
// is a prime or not
public static int prime(int a)
{
int k = 0;
// Iterating till the number
for (int i = 2; i < a; i++) {
// Checking for factors
if (a % i == 0) {
k = 1;
break;
}
}
// Returning 1 if the there are no factors
// of the number other than 1 or itself
if (k == 1) {
return (0);
}
else {
return (1);
}
}
// Function to check whether a number
// is an adam number or not
public static int adam(int a)
{
// Reversing given number
int r1 = reverse(a);
// Squaring given number
int s1 = a * a;
// Squaring reversed number
int s2 = r1 * r1;
// Reversing the square of the
// reversed number
int r2 = reverse(s2);
// Checking if the square of the number
// and the square of its reverse
// are equal or not
if (s1 == r2) {
return (1);
}
else {
return (0);
}
}
// Function to find all the prime
// adam numbers in the given range
public static void find(int m, int n)
{
// If the first number is greater
// than the second number,
// print invalid
if (m > n) {
System.out.println(" INVALID INPUT ");
}
else {
int c = 0;
// Iterating through all the numbers
// in the given range
for (int i = m; i <= n; i++) {
// Checking for prime number
int l = prime(i);
// Checking for Adam number
int k = adam(i);
if ((l == 1) && (k == 1)) {
System.out.print(i + "\t");
}
}
}
}
// Driver code
public static void main(String[] args)
{
int L = 5, R = 100;
find(L, R);
}
}
Python3
# Python3 program to find all prime
# adam numbers in the given range
def reverse(a):
rev = 0;
while (a != 0):
r = a % 10;
# Reversing a number by taking
# remainder at a time
rev = rev * 10 + r;
a = a // 10;
return(rev);
# Function to check if a number
# is a prime or not
def prime(a):
k = 0;
# Iterating till the number
for i in range(2, a):
# Checking for factors
if (a % i == 0):
k = 1;
break;
# Returning 1 if the there are
# no factors of the number other
# than 1 or itself
if (k == 1):
return (0);
else:
return (1);
# Function to check whether a number
# is an adam number or not
def adam(a):
# Reversing given number
r1 = reverse(a);
# Squaring given number
s1 = a * a;
# Squaring reversed number
s2 = r1 * r1;
# Reversing the square of the
# reversed number
r2 = reverse(s2);
# Checking if the square of the
# number and the square of its
# reverse are equal or not
if (s1 == r2):
return (1);
else:
return (0);
# Function to find all the prime
# adam numbers in the given range
def find(m, n):
# If the first number is greater
# than the second number,
# print invalid
if (m > n):
print("INVALID INPUT\n");
else:
c = 0;
# Iterating through all the
# numbers in the given range
for i in range(m, n):
# Checking for prime number
l = prime(i);
# Checking for Adam number
k = adam(i);
if ((l == 1) and (k == 1)):
print(i, "\t", end = " ");
# Driver code
L = 5; R = 100;
find(L, R);
# This code is contributed by Code_Mech
C#
// C# program to find all prime
// adam numbers in the given range
using System;
class GFG{
public static int reverse(int a)
{
int rev = 0;
while (a != 0)
{
int r = a % 10;
// Reversing a number by taking
// remainder at a time
rev = rev * 10 + r;
a = a / 10;
}
return (rev);
}
// Function to check if a number
// is a prime or not
public static int prime(int a)
{
int k = 0;
// Iterating till the number
for(int i = 2; i < a; i++)
{
// Checking for factors
if (a % i == 0)
{
k = 1;
break;
}
}
// Returning 1 if the there are no factors
// of the number other than 1 or itself
if (k == 1)
{
return (0);
}
else
{
return (1);
}
}
// Function to check whether a number
// is an adam number or not
public static int adam(int a)
{
// Reversing given number
int r1 = reverse(a);
// Squaring given number
int s1 = a * a;
// Squaring reversed number
int s2 = r1 * r1;
// Reversing the square of the
// reversed number
int r2 = reverse(s2);
// Checking if the square of the
// number and the square of its
// reverse are equal or not
if (s1 == r2)
{
return (1);
}
else
{
return (0);
}
}
// Function to find all the prime
// adam numbers in the given range
public static void find(int m, int n)
{
// If the first number is greater
// than the second number,
// print invalid
if (m > n)
{
Console.WriteLine("INVALID INPUT");
}
else
{
// Iterating through all the numbers
// in the given range
for(int i = m; i <= n; i++)
{
// Checking for prime number
int l = prime(i);
// Checking for Adam number
int k = adam(i);
if ((l == 1) && (k == 1))
{
Console.Write(i + "\t");
}
}
}
}
// Driver code
public static void Main(String[] args)
{
int L = 5, R = 100;
find(L, R);
}
}
// This code is contributed by Rohit_ranjan
输出:
11 13 31
11 13 31
时间复杂度: O(N 2 ) ,其中N是最大数R。