Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cmath>
- int perfect[4], n; //niz indeksiran od 0
- bool factorize (int x)
- {
- int ret=1, sq=sqrt(x);
- for (int i=2;i<=sq;i++) if (x%i==0) ret+=i+x/i; //faktorizacija do sqrt(x)
- if (sq*sq==x && x%sq==0) ret-=sq; //ako je broj potpun kvadrat dva puta cemo sabrati sqrt(x) kao delilac, pa oduzimamo jednom
- return (ret==x); //ako je broj jednak zbiru delilaca (osim njega samog) vraca true
- }
- void findPerfectNumbers ()
- {
- int found=0;
- for (int i=2;found<4;i++)
- {
- if (factorize(i)) perfect[found++]=i;
- }
- }
- void getPerfectNumber()
- {
- int n;
- scanf ("%d", &n);
- if (n && n<5) printf ("%d", perfect[n-1]); //ako je n iz skupa [1, 2, 3, 4]
- else printf ("Greska");
- }
- int main()
- {
- findPerfectNumbers();
- getPerfectNumber();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement