1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
| #include <stdio.h>
#include <iostream>
#include <string.h>
int GCD (int a,int b,int n)
{ int tmp;
while (b)
{ a %= b;
tmp=a;
a=b;
b=tmp;
}
int z;
if(n - 1 >= 0)
{ scanf ("%d", &z);
return GCD(a,z,n--);
}
return a;
}
void PrintFile (char*filename, int k)
{ FILE*fp;
int i;
fp=fopen (filename, "r+b");
if (!fp)
{ puts ("File isn't opened");
}
for (int j=0; j<k; j++)
{ fread (&i,sizeof(int),1,fp);
printf ("%d ", i);
}
printf ("\n");
fclose(fp);
}
int main (void)
{ int n, x, y, t;
char filename[128];
puts ("Enter filename");
gets (filename);
printf ("Enter n: ");
scanf ("%d", &n);
printf ("Enter numbers: ");
scanf ("%d%d", &x,&y);
printf ("GCD is: %d\n", GCD(x,y,n-2));
t=GCD(x,y,n-2);
FILE*fp;
fp=fopen (filename, "w+b");
if (!fp)
{ puts ("File isn't opened");
}
int i=2;
while(i<=t) //Факторизация НОД
{ if(t%i==0)
{ printf("%d ",i);
fwrite (&i,sizeof(int),1,fp); //Записываем в файл наше простое число
t/=i;
}
else
i++;
}
int k=i;
printf ("\n");
fclose(fp);
PrintFile (filename, k);
system ("pause");
return 0;
} |