Kod: Zaznacz cały
#include<cstdio>
int main()
{
int n;
scanf("%d", &n);
printf("%d\n",1);
int koniec=n/2;
for(int a=2; a<=koniec; a++)
{
if(n%a==0)
printf("%d\n",a);
}
if(n!=1)
printf("%d\n",n);
return 0;
}
Kod: Zaznacz cały
#include<cstdio>
int main()
{
int n;
scanf("%d", &n);
printf("%d\n",1);
int koniec=n/2;
for(int a=2; a<=koniec; a++)
{
if(n%a==0)
printf("%d\n",a);
}
if(n!=1)
printf("%d\n",n);
return 0;
}
Kod: Zaznacz cały
#include <cstdlib>
#include <iostream>
int main()
{
int liczba = 0;
std::cout << "Podaj liczbe ";
std::cin >> liczba;
std::cout << std::endl << "Dzielniki liczby " << liczba << " to:" << std::endl << std::endl;
for(int i = 1; i <= liczba; i++)
{
if(liczba%i == 0)
{
std::cout << i << std::endl;
}
}
std::cin.ignore();
std::cin.get();
return 0;
}
Wg programu:D13560 = {1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 20, 24, 30, 40, 60, 113, 120, 226, 339, 452, 565, 678, 904, 1130, 1356, 1695, 2260, 2712, 3390, 4520, 6780, 13560}
Dzielniki liczby 13560 to:
1
2
3
4
5
6
8
10
12
15
20
24
30
40
60
113
120
226
339
452
565
678
904
1130
1356
1695
2260
2712
3390
4520
6780
13560
Kod: Zaznacz cały
#include <iostream>
#include <cmath>
#include <list>
int main (int argc, char const* argv[])
{
unsigned int liczba = 0;
std::list<unsigned int> dzielniki(0);
std::cout << "Podaj liczbę: ";
std::cin >> liczba;
//dzielniki 1 i liczba są oczywiste
dzielniki.push_back(1);
dzielniki.push_back(liczba);
//liczymy od dwóch do pierwiastka włącznie
for(int i = 2; i <= sqrt(liczba); ++i){
if(liczba%i==0){
//dodajemy do listy dzielnik
dzielniki.push_back(i);
//oraz drugi dzielnik - mamy dwa dzielniki w jednej pętli
dzielniki.push_back(liczba/i);
}
}
//sortujemy - dla estetyki
dzielniki.sort();
//wyświetlamy
std::list<unsigned int>::iterator it = dzielniki.begin();
for(it; it != dzielniki.end(); ++it)
std::cout << *it << "\n";
return 0;
}
Racja, nie zauważyłem tego, ale da się to łatwo rozwiązać dodając po posortowaniu listy linijkę:beluosus pisze:@norvoles: jedna uwaga, sprawdź liczby 10^2n, czyli 100, 10000... i na liście zwróć uwagę na pierwiastek tej liczby, czyli dla 100 popatrz na 10. W ostatniej pętli pierwszy argument powinien być pusty.
Kod: Zaznacz cały
dzielniki.unique();
Tak - łatwo, ale lepiej zastosować się do "standardowego" algorytmu:norvoles pisze:beluosus pisze:Racja, nie zauważyłem tego, ale da się to łatwo rozwiązać dodając po posortowaniu listy linijkę:Kod: Zaznacz cały
dzielniki.unique();
Kod: Zaznacz cały
int lim = liczba/i;
if (lim != i)
dzielniki.push_back(lim);
Kod: Zaznacz cały
std::cout << i << "\n";
int lim = liczba/i;
if (lim != i)
dzielniki.push_back(lim);
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 91 gości