Christine Segui Ответов: 1

Нечетное составное число


Не могли бы вы помочь мне получить составное нечетное число с помощью функции..


Заранее спасибо

CHill60

Какое составное нечетное число? Их бесконечное количество

Christine Segui

на самом деле, это моя настоящая проблема

Мне нужно ввести нечетное составное число тогда ответ должен быть в этой форме
Q = p + 2 * b^2
где: Q = - входное число
P и B должны быть простыми числами

Например:
25 = 7 + 2 * 3 ^ 2
25 = 25

У меня есть свой код, но у меня есть только одна проблема, я могу ввести только нечетное число, которое не ищет, если его составное число.

ZurdoDev

Да, мы будем рады помочь. Где ты застрял?

Christine Segui

на самом деле, это моя настоящая проблема

Мне нужно ввести нечетное составное число тогда ответ должен быть в этой форме
Q = p + 2 * b^2
где: Q = - входное число
P и B должны быть простыми числами

Например:
25 = 7 + 2 * 3 ^ 2
25 = 25

У меня есть свой код, но у меня есть только одна проблема, я могу ввести только нечетное число, которое не ищет, если его составное число.

ZurdoDev

"можно ввести только нечетное число, которое не ищет, если его составное число." Извините, я не понимаю, что это значит. Не могли бы вы выразиться яснее?

Christine Segui

допустим, я могу ввести только нечетное число. (1,3,5,7,9,11,13,15) все числа имеют остаток 1.
В этих нечетных числах мне нужно иметь только нечетное составное число.. (Нечетные числа, которые также являются составными числами)

1 Ответов

Рейтинг:
2

José Amílcar Casimiro

using System;

namespace PrimeNumber
{
    class Program
    {
        /// <summary>
        /// Verify if given number is prime.
        /// </summary>
        /// <param name="number"></param>
        /// <returns>true if number is prime, false otherwise.</returns>
        static bool IsPrimeNumber(int number)
        {
            int divisionCount = 0;
            int index_number = number;

            while (index_number > 0)
            {
                if (number % index_number == 0)
                    divisionCount++;

                index_number--;
            }

            return (divisionCount == 2);
        }

        /// <summary>
        /// Aplication entry point
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            //by definition, composite odd number is a number that is not prime
            for (int number = 1; number < 100; number++)
            {
                if (IsPrimeNumber(number))
                    Console.WriteLine("prime number -> {0}", number);
                else
                    Console.WriteLine("composite odd number -> {0}", number);
            }

            Console.ReadKey();
        }
    }
}


Dave Kreskowiak

Любопытный. Сколько времени потребуется вашему коду, чтобы определить, является ли 3495845893 простым?
Хотя он небольшой и простой для понимания, ваш метод неэффективен и делает много математики, которую ему не нужно делать. Вам нужно только проверить значения до Sqrt значения кандидата. Вы также можете пропустить множество тестовых значений. Это функция, которую я использую:

<Extension()>
Public Function IsPrime(ByVal value As Integer) As Boolean
If value = 2 Or value = 3 Then Return True

If value < 2 Or value Mod 2 = 0 Then Return False

If value < 9 Then Return True

If value Mod 3 = 0 Then Return False

Dim i As Integer = CInt(Math.Sqrt(value))
Dim j As Integer = 5
While j <= i
If value Mod j = 0 Then Return False
If value Mod (j + 2) = 0 Then Return False
j += 6
End While

Return True
End Function

José Amílcar Casimiro

Спасибо за улучшение производительности кода. Моя цель состояла в том, чтобы объяснить простым способом, как эта проблема может быть решена.