Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- int estePrim(int n)
- {
- int k,prim;
- /*presup ca nr este prim*/
- prim = 1;
- for(k=2; k<=sqrt(n)&&prim ==1; k++)
- {
- if(n%k ==0)
- {
- prim=0;
- }
- }
- return(prim);
- }
- /*returneaza nr de divizori ai lui n si in d retinem valorile divizorilor */
- int calculeazaDivizori(int n, int d[])
- {
- int k;
- int nrDiv=0;
- for(k=1; k<=(n/2); k++)
- {
- if(n%k ==0)
- {
- d[nrDiv]=k;
- nrDiv++;
- }
- }
- d[nrDiv]=n;
- nrDiv++;
- return nrDiv;
- }
- int cmmdc(int a,int b)
- {
- int rest;
- do
- {
- rest=a%b;
- a=b;
- b=rest;
- }
- while (rest!=0);
- return a;
- }
- int cmmmc(int a, int b)
- {
- return ((a*b)/cmmdc(a,b));
- }
- int main()
- {
- int k,n,m,i,j,liberPatrate;
- int d[100];//retinem divizorii
- int nrDivizori; //va retine numarul de divizori
- printf("n= ");
- scanf("%d",&n);
- m=n;//salvam nr citit in m.
- if (estePrim(n)==1)
- {
- printf("nr este prim\n");
- }
- else
- {
- printf("nr nu este prim\n");
- nrDivizori=calculeazaDivizori(n,d);
- // de afisat divizorii
- i=2;
- liberPatrate=1;
- do
- {
- k=0;
- while (n%i==0)
- {
- n=n/i;
- k++;
- if (k>0)
- {
- printf("%d^%d *",i,k);
- if (k>=2)
- {
- liberPatrate=0;
- }
- }
- }
- i++;
- }
- while (n!=1);
- n=m;//restauram nr initial.
- if (liberPatrate==1)
- {
- printf("\n%d este liber de patrate\n",n);
- }
- else
- {
- printf("\n%d nu este liber de patrate\n",n);
- }
- }
- printf("Tabela infimum\n");
- printf("%3c",'^');
- for (i=0; i<nrDivizori; i++)
- {
- printf("%3d",d[i]);
- }
- printf("\n");
- for(i=0; i<nrDivizori; i++)
- {
- printf("%3d",d[i]);
- for(j=0; j<nrDivizori; j++)
- {
- printf("%3d",cmmdc(d[i],d[j]));
- }
- printf("\n");
- }
- printf("\n");
- printf("\ntabela supremum\n");
- printf("%3c",'V');
- for (i=0; i<nrDivizori; i++)
- {
- printf("%3d",d[i]);
- }
- printf("\n");
- for(i=0; i<nrDivizori; i++)
- {
- printf("%3d",d[i]);
- for(j=0; j<nrDivizori; j++)
- {
- printf("%3d",cmmmc(d[i],d[j]));
- }
- printf("\n");
- }
- printf("\n");
- if (liberPatrate==1)
- {
- for(i=0; i<nrDivizori; i++)
- printf("Complementul lui %d este %d \n",d[i],cmmmc(n,d[i])/d[i]);
- }
- return(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement