-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdecide_perfect_harmonic_number.c
97 lines (90 loc) · 2.56 KB
/
decide_perfect_harmonic_number.c
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
void decide_perfect_harmonic_number(){
int sayi;
int bolenlerdizi[20];
int flag;
int r;
char str[20];
flag = 0;
r=0;
while(!flag)
{
while(!r){
int toplam= 0;
printf("Sayiyi giriniz : ");
scanf("%s",&str);
if(str[0] == 42 ) {
flag=1;
r=1;
break;}
else{
sayi = atoi(str);
if(sayi >= 0)
{
r=0;
}
else
{
sayi = atoi(str);
printf("sayi dogal olmalidir. islem yapilacaktir fakat sonuc 0 cikacaktir. Lutfen pozitif bir deger giriniz. \n");
printf("islemin yapilma sebebi perfect number ve harmonic number lerin pozitif sayilar icin oldugunu gostermektir.\n");
}
int j,i,m;
sayi = atoi(str);
int sayac = 0;
for(j=1; j<=sayi; j++)
{
if(sayi % j == 0)
{
toplam = toplam + j;
bolenlerdizi[sayac]=j;
if(j!=sayi)
{
printf("%d ",j);
}
sayac ++;
}
}
toplam-=sayi;
printf("%d \n",sayi);
int bolentoplam=0;
printf("Kendi disinda bolenleri toplami ");
for(m=0; m<sayac-1; m++)
{
if(m<sayac-2)
{
printf("%d + ",bolenlerdizi[m]);
bolentoplam=bolentoplam+bolenlerdizi[m];
}
if(m==sayac-2)
{
printf("%d ",bolenlerdizi[m]);
bolentoplam=bolentoplam+bolenlerdizi[m];
}
}
printf("= %d \n",bolentoplam);
if(toplam == sayi)
printf("Mukemmel sayidir ! \n");
else
printf("Mukemmel sayi degildir\n");
float s=0.0;
printf("Harmonic degeri %d/(",sayac);
for(i=0; i<sayac; i++)
{
if(i<sayac-1)
{
printf("1/%d + ",bolenlerdizi[i]);
s=s+1/(float)bolenlerdizi[i];
}
if(i==sayac-1)
{
printf("1/%d) ",bolenlerdizi[i]);
s=s+1/(float)bolenlerdizi[i];
}
}
printf("= %0.1f \n",s);
float harmonicdeger=sayac/s;
if(harmonicdeger-(int)harmonicdeger == 0)
printf("Harmonic Divisor Number \n");
else
printf(" Harmonic Divisor Number degildir. \n"); }}}
}