void dividers(st *a, unsigned int n) { int i,j; prost(a,n); if(a->s1!=0) { printf(" %u\n",n); printf(" %u\n",1); printf(" %u--%u\n",n,1); return; } for(i=1;i<=sqrt(n); i++) if (n%i==0) { a->mas[a->s]=i; a->s++; prost(a,i); printf(" %u\n", i); if (i!=n/i) { a->mas[a->s]=n/i; a->s++; printf(" %u\n", n/i); prost(a, n/i); } } for (i=a->s-1;i!=-1;i--) for (j=0;j<a->s1;j++) if (a->mas[i]%a->mas1[j]==0) printf(" %u--%u\n",a->mas[i],a->mas[i]/a->mas1[j]); }
int main(){ int n,i; printf("Unesite broj: "); scanf("%d", &n); printf("Ovo su prosti brojevi do %d : \n", n); for(i=3;i<=n;i++)if(prost(i)==1)printf("%d\n",i); return 0; }
// функција која го наоѓа следниот поголем прост број од внесениот int najdi_sleden_prost_broj(int n) { if (prost(n + 1, 2)) // ако следниот број е прост, врати го { return n + 1; } else { // ако не, зголеми го за еден и пробај повторно // сѐ додека не наидеш на прост број return najdi_sleden_prost_broj(n + 1); } }
// функција која рекурзивно проверува дали некој броје прост int prost(int n, int i) { if (n % i == 0) // ако е деллив со i тогаш е прост (има делители различни од 1) { return 0; } else if (i * i > n) // ако сме стигнале до коренот на бројот { return 1; // тогаш бројот е прост и врати True } else { return prost(n, i + 1); // во спротивно зголемувај го i зa 1 } }