Witam, otóż muszę napisać program, który wczytuje liczbę podaną przez użytkownika 'p', p-ilość dzielników liczby. Program ma wyszukiwać najmniejsza liczbę która posiada co najmniej 'p'dzielników.
Moja liczba musi być w zakresie liczb int. Jeśli takowej nie ma (nie jest w zakresie int lub nie ma tylu dzielników) to stop. Program robi wszystko co ma robić, ale jeśli poda się za dużą liczbę to niestety się zawiesza. Pomoże ktoś. Drugie problem to wykonuje się za długo przy podaniu większej liczby jak to można usprawnić ?
#include <stdio.h>
#include <math.h>
int ile_dzielnikow(int liczba, int licznik) /*Zliczanie dzielnikow liczby*/
{
liczba=licznik;
int dzielnik=0;
while(licznik>=1)
{
if(liczba%licznik==0)
{
dzielnik=dzielnik+1;
}
licznik--;
}
return dzielnik;
}
int main(void)
{
int p;
printf("Podaj liczbe:");
scanf("%d",&p);
int dzielnik=0;
int n=1;
while(n>0) /*wyszukiwanie kolejnych liczb*/
{
dzielnik=ile_dzielnikow(n,n);
if(dzielnik>=p) /*jesli ilosc dzielnikow jet rowna p lub wieksza to wypisz liczbe i ilosc dzielnikow*/
{
printf("Liczba:%d Ilosc dzielnikow:%d",n,dzielnik);
break;
}
n=n+1;
}
if(dzielnik<p)
{
printf("BRAK");
}
return 0;
}