• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z Liczbami Palindromowymi

VPS Starter Arubacloud
0 głosów
106 wizyt
pytanie zadane 29 listopada 2017 w C i C++ przez famousghost Początkujący (430 p.)

Cześć,

mam problem z zadaniem wypisanie wszystkich palidromowych dla liczb które, są wynikiem mnożenia dwóch liczb pierwszych 5-cyfrowych nie wiem już o co chodzi. Proszę o to kod, który działa dla liczb pierwszych 4-cyfrowych.

#include <iostream>
#include <cmath>

using namespace std;

void MakeProductOfTwoPrimeNumbers();

bool IsPalidrome(unsigned long long number);

bool PrimeNumber(unsigned long long number);

int main()
{
    MakeProductOfTwoPrimeNumbers();
    return 0;
}

void MakeProductOfTwoPrimeNumbers()
{
    unsigned long long number;
    unsigned long long temp=0;
    unsigned long long length=10000;
    for(unsigned long long i=99999;i>=length;i--)
    {

        if(PrimeNumber(i))
        {
            for(unsigned long long j=99999;j>=length;j--)
            {
                if(PrimeNumber(j))
                {
                    number = i*j;
                    if(IsPalidrome(number))
                    {
                        cout<<i<<endl;
                        cout<<j<<endl;
                        cout<<number<<endl;
                        if(temp<number)
                            temp = number;
                    }
                }
            }
        }
    }
    cout<<temp<<endl;
}

bool PrimeNumber(unsigned long long number)
{
    if(number<2)
    {
        return false;
    }
    else
    {
        for(unsigned long long i=2;i<=sqrt(number);i++)
        {
            if(number%i==0)
            {
                return false;
            }
        }
    }
    return true;
}

bool IsPalidrome(unsigned long long number)
{
    unsigned long long temp = number,n = 0;
    if(temp%10==0)
    {
        return false;
    }
    while(temp>0)
    {
        n = n*10 + temp%10;
        temp/=10;
    }
    return number == n;
}

 

komentarz 29 listopada 2017 przez Alex.Ironside Stary wyjadacz (14,880 p.)
Nie pros o kod bo Cie tylko admini okrzycza ;)

1 odpowiedź

0 głosów
odpowiedź 29 listopada 2017 przez k222 Nałogowiec (30,150 p.)
wybrane 29 listopada 2017 przez famousghost
 
Najlepsza

Problem chyba leży w funkcji IsPalindrome, a dokładniej w linijkach:

unsigned long long  n = 0;
n = n*10 + temp%10;

bo 0*10 = 0 i w kółko masz same 0, popraw na n=1 i wtedy zobacz 

Poza tym pomyśl, czy funkcji PrimeNumber nie dało by się jakoś przyspieszyć zmieniając delikatnie pętlę for, albo w twoim przypadku proponuję zastosować sito erastotenesa, nada się świetnie i istotnie przyspieszy program

komentarz 29 listopada 2017 przez famousghost Początkujący (430 p.)
Cześć,

Dzięki wielkie za pomoc jeżeli chodzi o to miejsce, które wskazałeś jest dobrze bo tam pierwsza liczba to ma być 0 * 10 + tam ostatnia liczba tego wyniku mnożenia dwóch liczb pierwszych a jeżeli chodzi o algorytm dzięki ciekawy algortym. Pomoże mi to zaimplementować wszystkie liczby do tablicy a potem sobie dopiero to mnożyć tak żeby nie chodzić po tak dużej pętli.

Podobne pytania

0 głosów
1 odpowiedź 146 wizyt
pytanie zadane 2 marca 2018 w C i C++ przez Admin Cpp Początkujący (350 p.)
0 głosów
1 odpowiedź 147 wizyt
pytanie zadane 27 czerwca 2017 w C i C++ przez pajac Nowicjusz (210 p.)
0 głosów
0 odpowiedzi 492 wizyt
pytanie zadane 18 października 2019 w C i C++ przez Hubertius Bywalec (2,970 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...