Рубрики

Номер мистификации

Учитывая число 'n', проверьте, является ли это обманным числом или нет.
Номер обмана определяется как составное число, сумма цифр которого равна сумме цифр его отдельных простых факторов. Здесь можно отметить, что 1 не считается простым числом, следовательно, оно не включается в сумму цифр различных простых факторов.

Примеры :

Input : 22
Output : A Hoax Number
Explanation : The distinct prime factors of 22 
are 2 and 11. The sum of their digits are 4, 
i.e 2 + 1 + 1 and sum of digits of 22 is also 4.

Input : 84
Output : A Hoax Number
Explanation : The distinct prime factors of 84 
are 2, 3 and 7. The sum of their digits are 12, 
i.e 2 + 3 + 4 and sum of digits of 84 is also 12.

Input : 19
Output : Not a Hoax Number
Explanation : By definition, a hoax number is 
a composite number.

Определение чисел Мистификации очень похоже на определение чисел Смита . Фактически, некоторые из чисел Мистификации также являются числами Смита. Очевидно, что те числа обмана, которые не имеют повторяющихся факторов в своем простом разложении, то есть число без квадратов , также являются приемлемыми числами Смита.

Реализация
1) Сначала сгенерируйте все различные простые множители числа 'n'.
2) Если 'n' не является простым числом, найдите сумму цифр факторов, полученных на шаге 1.
3) Найдите сумму цифр n.
4) Проверьте, равны ли суммы, полученные в шагах 2 и 3, или нет.
5) Если суммы равны, «n» — обманное число.

C ++

// код CPP, чтобы проверить, является ли число обманным
// номер или нет.
#include <bits/stdc++.h>

using namespace std;

// Функция для поиска различных простых факторов
// данного числа n

vector<int> primeFactors(int n)

{

    vector<int> res;

    if (n % 2 == 0) {

        while (n % 2 == 0)

            n = n / 2;

        res.push_back(2);

    }

  

    // n нечетно в этой точке, так как это не

    // больше делится на 2. Так что мы можем проверить

    // только для нечетных чисел, будь они

    // факторы н

    for (int i = 3; i <= sqrt(n); i = i + 2) {

  

        // Проверяем, является ли я простым множителем

        if (n % i == 0) {

            while (n % i == 0)

                n = n / i;

            res.push_back(i);

        }

    }

  

    // Это условие для обработки дела

    // когда n простое число больше 2

    if (n > 2)

        res.push_back(n);

    return res;

}

  
// Функция для вычисления суммы цифр
// отдельные простые множители заданного числа n
// и сумма цифр числа n и сравнение
// полученные суммы

bool isHoax(int n)

    // Различаются простые факторы n

    // хранится в векторе pf

    vector<int> pf = primeFactors(n);

      

    // Если n простое число, оно не может быть

    // обманный номер

    if (pf[0] == n)

        return false;

      

    // Нахождение суммы цифр различного простого числа

    // факторы числа n

    int all_pf_sum = 0;    

    for (int i = 0; i < pf.size(); i++) {

  

        // Находим сумму цифр в текущем

        // простой фактор pf [i].

        int pf_sum;

        for (pf_sum = 0; pf[i] > 0; 

             pf_sum += pf[i] % 10, pf[i] /= 10)

            ;

  

        all_pf_sum += pf_sum;

    }

  

    // Находим сумму цифр числа n

    int sum_n;

    for (sum_n = 0; n > 0; sum_n += n % 10,

                                  n /= 10)

        ;

  

    // Сравнение двух вычисленных сумм

    return sum_n == all_pf_sum;

}

  
// Метод драйвера

int main()

{

    int n = 84;

    if (isHoax(n))

        cout << "A Hoax Number\n";

    else

        cout << "Not a Hoax Number\n";

    return 0;

}

Джава

// Java-код для проверки, является ли число
// обманный номер или нет.

import java.io.*;

import java.util.*;

  

public class GFG {

      

    // Функция для поиска

    // основные факторы данного

    // номер n

    static List<Integer> primeFactors(int n)

    {

        List<Integer> res = new ArrayList<Integer>();

        if (n % 2 == 0

        {

            while (n % 2 == 0)

                n = n / 2;

            res.add(2);

        }

      

        // n нечетно в этой точке,

        // так как его больше нет

        // делится на 2. Итак, мы

        // может тестировать только для

        // нечетные числа, будь они

        // факторы н

        for (int i = 3; i <= Math.sqrt(n);

                                i = i + 2

        {

      

            // Проверяем, является ли я простым множителем

            if (n % i == 0

            {

                while (n % i == 0)

                    n = n / i;

                res.add(i);

            }

        }

      

        // Это условие

        // обрабатывать случай, когда

        // n простое число

        // больше 2

        if (n > 2)

            res.add(n);

        return res;

    }

      

    // Функция для расчета

    // сумма цифр разных

    // основные факторы данного

    // число n и сумма

    // цифры номера n и

    // сравниваем полученные суммы

    static boolean isHoax(int n)

    

          

        // Разные простые факторы

        // из n в настоящее время

        // хранится в векторе pf

        List<Integer> pf = primeFactors(n);

          

        // Если n простое число,

        // это не может быть обманным числом

        if (pf.get(0) == n)

            return false;

          

        // Находим сумму цифр разных

        // простые множители числа n

        int all_pf_sum = 0

        for (int i = 0; i < pf.size(); i++)

        {

      

            // Находим сумму цифр в текущем

            // простой фактор pf [i].

            int pf_sum;

            for (pf_sum = 0; pf.get(i) > 0

                pf_sum += pf.get(i) % 10

                   pf.set(i,pf.get(i) / 10));

      

            all_pf_sum += pf_sum;

        }

      

        // Находим сумму цифр числа n

        int sum_n;

        for (sum_n = 0; n > 0; sum_n += n % 10,

                                    n /= 10)

            ;

      

        // Сравнение двух вычисленных сумм

        return sum_n == all_pf_sum;

    }

      

    // Код драйвера

    public static void main(String args[])

    {

        int n = 84;

        if (isHoax(n))

            System.out.print( "A Hoax Number\n");

        else

            System.out.print("Not a Hoax Number\n");

    }

}

  
// Этот код предоставлен
// Маниш Шоу (manishshaw1)

python3

# Python3 код, чтобы проверить, является ли число обманом
№ номер или нет.

import math

  
# Функция для поиска четких основных факторов
№ данного числа n

def primeFactors(n) :

    res = []

    if (n % 2 == 0) :

        while (n % 2 == 0) :

            n = int(n / 2)

        res.append(2)

  

    # n нечетен в этом пункте, так как это не

    # больше делится на 2. Так что мы можем проверить

    # только для нечетных чисел, будь они

    # являются факторами п

    for i in range(3,int(math.sqrt(n)),2):

        # Проверьте, является ли я основным фактором

        if (n % i == 0) : 

            while (n % i == 0) :

                n = int(n / i)

            res.append(i)

  

    # Это условие для обработки дела

    # когда n простое число больше 2

    if (n > 2) :

        res.append(n)

    return res

  
# Функция для вычисления суммы цифр
# отдельные простые факторы заданного числа n
# и сумма цифр числа n и сравнить
# полученные суммы

def isHoax(n) :

    # Определенные простые факторы п в настоящее время

    # хранится в векторе pf

    pf = primeFactors(n)

      

    # Если n простое число, оно не может быть

    # номер мистификации

    if (pf[0] == n) :

        return False

      

    # Нахождение суммы цифр различных простых

    # факторы числа n

    all_pf_sum = 0

    for i in range(0,len(pf)):

  

        # Нахождение суммы цифр в текущем

        # простой фактор pf [i].

        pf_sum = 0

        while (pf[i] > 0):

            pf_sum += pf[i] % 10

            pf[i] = int(pf[i] / 10)

  

        all_pf_sum += pf_sum

      

  

    # Нахождение суммы цифр числа n

    sum_n = 0;

    while (n > 0):

        sum_n += n % 10

        n = int(n / 10)

  

    # Сравнение двух рассчитанных сумм

    return sum_n == all_pf_sum

  

  
# Метод драйвера

n = 84;

if (isHoax(n)):

    print ("A Hoax Number\n")

else:

    print ("Not a Hoax Number\n")

      
# Этот код предоставлен Манишем Шоу
# (manishshaw1)

C #

// код C #, чтобы проверить, является ли число
// обманный номер или нет.

using System;

using System.Collections.Generic;

  

class GFG {

      

    // Функция для поиска

    // основные факторы данного

    // номер n

    static List<int> primeFactors(int n)

    {

        List<int> res = new List<int>();

        if (n % 2 == 0) 

        {

            while (n % 2 == 0)

                n = n / 2;

            res.Add(2);

        }

      

        // n нечетно в этой точке,

        // так как его больше нет

        // делится на 2. Итак, мы

        // может тестировать только для

        // нечетные числа, будь они

        // факторы н

        for (int i = 3; i <= Math.Sqrt(n);

                                i = i + 2) 

        {

      

            // Проверяем, является ли я простым множителем

            if (n % i == 0) 

            {

                while (n % i == 0)

                    n = n / i;

                res.Add(i);

            }

        }

      

        // Это условие

        // обрабатывать случай, когда

        // n простое число

        // больше 2

        if (n > 2)

            res.Add(n);

        return res;

    }

      

    // Функция для расчета

    // сумма цифр разных

    // основные факторы данного

    // число n и сумма

    // цифры номера n и

    // сравниваем полученные суммы

    static bool isHoax(int n)

    

          

        // Разные простые факторы

        // из n в настоящее время

        // хранится в векторе pf

        List<int> pf = primeFactors(n);

          

        // Если n простое число,

        // это не может быть обманным числом

        if (pf[0] == n)

            return false;

          

        // Находим сумму цифр разных

        // простые множители числа n

        int all_pf_sum = 0; 

        for (int i = 0; i < pf.Count; i++)

        {

      

            // Находим сумму цифр в текущем

            // простой фактор pf [i].

            int pf_sum;

            for (pf_sum = 0; pf[i] > 0; 

                pf_sum += pf[i] % 10, pf[i] /= 10);

      

            all_pf_sum += pf_sum;

        }

      

        // Находим сумму цифр числа n

        int sum_n;

        for (sum_n = 0; n > 0; sum_n += n % 10,

                                     n /= 10)

            ;

      

        // Сравнение двух вычисленных сумм

        return sum_n == all_pf_sum;

    }

      

    // Код драйвера

    public static void Main()

    {

        int n = 84;

        if (isHoax(n))

            Console.Write( "A Hoax Number\n");

        else

            Console.Write("Not a Hoax Number\n");

    }

}

  
// Этот код предоставлен
// Маниш Шоу (manishshaw1)

PHP

<?php
// PHP-код для проверки номера
// это фальшивый номер или нет.

  
// Функция, чтобы найти отличное простое число
// факторы заданного числа n

function primeFactors($n)

{

    $res = array();

    if ($n % 2 == 0)

    {

        while ($n % 2 == 0)

            $n = (int)$n / 2;

        array_push($res, 2);

    }

  

    // n нечетно в этой точке, так как

    // он больше не делится на 2

    // Таким образом, мы можем проверить только на нечетные

    // числа, являются ли они факторами n

    for ($i = 3; $i <= sqrt($n); $i = $i + 2)

    {

  

        // Проверяем, является ли я простым множителем

        if ($n % $i == 0) 

        {

            while ($n % $i == 0)

                $n = (int)$n / $i;

            array_push($res, $i);

        }

    }

  

    // Это условие для обработки

    // случай, когда n простое число

    // число больше 2

    if ($n > 2)

        array_push($res, $n);

    return $res;

}

  
// Функция для расчета суммы
// цифр различного простого
// факторы заданного числа n
// и сумма цифр числа
// n и сравнить полученные суммы

function isHoax($n)

    // Разные простые факторы

    // из n сохраняются

    // в векторе pf

    $pf = primeFactors($n);

      

    // Если n простое число,

    // это не может быть обманным числом

    if ($pf[0] == $n)

        return false;

      

    // Находим сумму цифр разных

    // простые множители числа n

    $all_pf_sum = 0; 

    for ($i = 0; $i < count($pf); $i++)

    {

  

        // Находим сумму цифр в

        // текущий простой множитель pf [i].

        $pf_sum;

        for ($pf_sum = 0; $pf[$i] > 0; 

              $pf_sum += $pf[$i] % 10, 

                       $pf[$i] /= 10)

            ;

  

        $all_pf_sum += $pf_sum;

    }

  

    // Находим сумму цифр числа n

    for ($sum_n = 0; $n > 0; 

          $sum_n += $n % 10, $n /= 10)

        ;

  

    // Сравнение двух вычисленных сумм

    return $sum_n == $all_pf_sum;

}

  
// Код драйвера

$n = 84;

if (isHoax($n))

    echo ("A Hoax Number\n");

else

    echo ("Not a Hoax Number\n");

      
// Этот код предоставлен
// Маниш Шоу (manishshaw1)
?>

Выход :

A Hoax Number

Рекомендуемые посты:

Номер мистификации

0.00 (0%) 0 votes