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

Program wybierający liczby mające 18 dzielników

HackNation - ogólnopolski hackathon
0 głosów
1,806 wizyt
pytanie zadane 28 lutego 2016 w C i C++ przez Madrox24 Początkujący (350 p.)

Witajcie. Właśnie próbuję robić zadania do matury z informatyki. Moje zadanie brzmi tak : "Wśród liczb występujących w pliku wejściowym znajdź te, które mają dokładnie 18 dzielników naturalnych (wliczając w nie 1 i samą liczbę)."

Wykombinowałem coś takiego :

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
 ifstream plik;
 plik.open("liczby.txt");
 long liczba,ilosc=0,dzielnik;
 while (!plik.eof())
 {
 	plik>>liczba;
	dzielnik=0;
	ilosc=0;
	do
	{
	   dzielnik++;
 	   if(liczba%dzielnik==0) ilosc++;
    } while (dzielnik==liczba);
	if(ilosc==18) cout<<liczba<<endl;
 }

}

Szkoda tylko, że nie działa :P. Byłbym wdzięczny o wskazówkę :).

1 odpowiedź

0 głosów
odpowiedź 28 lutego 2016 przez Ehlert Ekspert (215,070 p.)

Jak obliczyć liczbę dzielników. Iterowanie od 1 do danej liczby jest bez sensu.

Mój algorytm. Najpierw dla liczb,  których pierwiastek€N:

Bierzemy 100. x, czyli pierwiastek jest równy 10.
Sprawdź dzielniki od 1 do 10 więc mamy: 1,2,4,5,10
Sprawdź ile jest dzielników od tych, które powstały.
Mamy: 100, 50, 25, 20 (10 już mamy).
Morał: ilość dzielników liczb, których pierwiastek jest liczbą całkowitą to:

(ilość dzielników z zakresu <1;pierwisatek_liczby>)*2-1;

A jak z liczbami których pierwiastek nie jest całkowity?

Tak samo z małą różnicą: pierwiastek zaokrąglamy w górę. Wtedy:
(ilość dzielników z zakresu <1;pierwisatek_liczby>)*2;

Implementacja algorytmu i jego optymalizacja pod względem szybkości i pamięci dla Ciebie smiley

Podobne pytania

0 głosów
1 odpowiedź 7,966 wizyt
0 głosów
2 odpowiedzi 556 wizyt

93,625 zapytań

142,548 odpowiedzi

323,034 komentarzy

63,129 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 1210p. - dia-Chann
  2. 1197p. - DziarnowskiJ
  3. 1177p. - Łukasz Piwowar
  4. 1172p. - CC PL
  5. 1161p. - Maurycy W
  6. 1141p. - Adrian Wieprzkowicz
  7. 1138p. - raydeal
  8. 1134p. - Tomasz Bielak
  9. 1116p. - rucin93
  10. 1101p. - robwarsz
  11. 1100p. - Mariusz Fornal
  12. 1024p. - ssynowiec
  13. 885p. - Dominik Łempicki (kapitan)
  14. 847p. - Grzegorz Aleksander Klementowski
  15. 838p. - Wojciech Malicki
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...