Soru: Bir arkadaş sayı çiftine konu tamsayıların ikisi de harshed (basamakları toplamına bölünebilen) tamsayısı ise, bu sayılara “harshed arkadaş sayıları” denir.Dışaıdan girilen sayıların harshed arkadaş sayıları olup olmadığını kontrol eden programı yazınız.(Arkadaş sayı çifti: Çarpanları toplamı eşit olan sayılara denir. Yani A ve B iki sayımız olsun ve A’nın çarpanları toplamı a B’nin çarpanları toplamı b olsun. Eğer a=B ve b=A ise bu iki sayı arkadaş sayılarıdır.)
2620 ve 2924 Harshed arkadaş sayı çiftidir.
Çözüm: Önce alınan sayıların carpantop’la fonksiyonu ile çarpanlarını buluyoruz.Daha sonra bu iki sayının basamak değerlerinin toplamını buluyoruz. Eğer koşula uygunsa yazdırıyoruz. basamaktop’la fonksiyonunda basamak fonksiyonuyla basamak sayısını buluyoruz. Yani 1’den başlayarak sayımızı 10’un katlarına bölüyoruz ve sayı 1’den küçük olduğunda döngüyü kırıyoruz. Daha sonra basamaktop fonksiyonuyla basamak fonksiyonundan gelen sayıyı kullanıp basamak değerlerinin toplamını buluyoruz. /*madjok3r*/
#include
#include
#include
int carpantop(int);
int basamak(int);
int basamaktop(int);
main()
{
int a,b,t1,t2,t3,t4;
printf("Iki sayi giriniz");
scanf("%d",&a);
scanf("%d",&b);
t1=carpantop(a);
t2=carpantop(b);
t3=basamaktop(a);
t4=basamaktop(b);
if(t2==a && t1==b && a%t3==0 && b%t4==0){
printf("%d ve %d Harshed arkadas sayilaridir.",a,b);
}
else printf("Harshed arkadas sayýlarý degildirler");
getch();
}
int carpantop(int a)
{
int i,t=0;
for(i=1;i
if(a%i==0) t=t+i;
}
return t;
}
int basamak(int a)
{
int i,k,b=0;
for(i=1;i<1000000;i=i*10){
k=a/i;
if(k<1) break;
b++;
}
return b;
}
int basamaktop(int a)
{
int i,k,t=0,b;
b=basamak(a);
for(i=pow(10,b-1);i>=1;i=i/10){
k=a/i;
t=t+k;
a=a-k*i;
}
return t;
}
Hiç yorum yok:
Yorum Gönder
ders,plan,proje,performans,ödev