Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
1
Cevap
5038
Tıklama
0
Öne Çıkarma
c de asal sayı ve çarpanlara ayırma
F
15 yıl
Onbaşı
Konu Sahibi

C de bir sayıyı alıp onun asal çarpanlarını gösteren bir program yazmaya çalışıyorum ilk önce o sayının yarısına kadar ki asal sayılara bölüyorum.Sonra elde ettiğim dizi tek tek sayıya bölüp deniyorum bölünüyorsa onları yazdırıyorum kodum şöyle



#include<stdio.h> 
#include<STDLIB.h>
void ona_kadar_asal(int a,int *asal)
{
int i;
int sayi;
int e=3;
int *asal_mi;
asal_mi = malloc(200);
for(i=0;i<200;i++)
{
asal_mi[i] = 1;
}
asal[0] = 2;
asal[1] = 3;
asal[2] = 5;
int b;
for(sayi=6;sayi<a/2;sayi++)
{
for( i = 2; i <= sayi/2; i++ ) {
if( sayi%i == 0 ) {

asal_mi[(i-2)] = 0 ;
break;
}
}
if( asal_mi[(i-2)] == 1 ) {
asal[e] = sayi;
e++;
}
}

asal[e] = 0;
realloc(asal_mi,(e+1));/* belleği verimli kullanmak için*/

}
void bolen_bul(int b,int *bolenler)
{
int a,c,d,e;
int aday[100];
ona_kadar_asal(b,aday);
for(a=0;aday[a];a++)
{
if(b % (aday[a]) == 0)
{
bolenler[a] = aday[a];
}
}
bolenler[a] = 0;
}
main()
{
int a,b;
int bolenler[200];
printf("sayilari carpanlara ayirir");
printf(" sayi giriniz >");
scanf("%d",&a);
bolen_bul(a,bolenler);
for(b=0;bolenler[b];b++)
{
printf("%d\n",bolenler[b]);
}
getche();
getchar(); /* program hemen açılıp kapanmasın diye */
system("PAUSE"); /* program hemen açılıp kapanmasın diye*/
return 0;
}




yardımlaını ziçin teşekkürler

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



F
15 yıl
Onbaşı
Konu Sahibi

çarpanlara ayıran bir program yazamadım ama bir sayının asal bölenlerini bulan bir program yazdım ihtiyacı olan arkadaşlar bakabilirler işte kodu



#include<stdio.h> 
void ona_kadar_asal_bul(int a,int *asal)
{
/*-----------------------------------------------------------------------------*/
/*Birinci bölüm asalları bul*/

int i;
int sayi;
int e=3;
int h=0;
int *asal_mi;
asal_mi = malloc(200);
asal[0] = 2;
asal[1] = 3;
asal[2] = 5;
int b;
/*-----------------------------------------------------------------------------*/

for(i=0;i<200;i++)
{
asal_mi[i] = 1;
}
/*-----------------------------------------------------------------------------*/

for(sayi=6;sayi<a/2;sayi++)
{
for( i = 2; i <= sayi/2; i++ ) {
if( sayi%i == 0 ) {

asal_mi[(i-2)] = 0 ;
break;
}
}
if( asal_mi[(i-2)] == 1 ) {
asal[e] = sayi;
e++;
}
}

asal[e] = 0;
}

/*-----------------------------------------------------------------------------*/
main()
{
/* atamalar */
int a,b,c,d,e;
int g=0;
int f=0;
e=0;
int sayi;
int bolenler[200];
int asallar[200];
int asal_bolenler[100];
int asal_mi[200];
/* atamalar */
/*-----------------------------------------------------------------------------*/
/* klavyeden değer alınıyor*/
printf("sayinin asal bolenlerini bulur");
scanf("%d",&sayi);
/*değer alındı*/


/*-----------------------------------------------------------------------------*/
/*tüm bölenleri bul*/
for(a=2;a<=sayi/2;a++)
{
if(sayi % a == 0)
{
bolenler[g] = a;
g++;
}
}
bolenler[g] = 0;
/* pozitif bölenler bulundu*/

/*-----------------------------------------------------------------------------*/

/*içinden asal olanlar ayıklanıyor */
ona_kadar_asal_bul(sayi,asallar);
for(b=0;bolenler[b];b++)
{
for(c=0;asallar[c];c++)
{
if(bolenler[b] == asallar[c])
{
asal_bolenler[f] = bolenler[b];
f++;
}
}
}

asal_bolenler[f] = 0;
/*asal olanlar ayıklandı */
/*------------------------------------------------------------------------------*/


/* yazdırılıyor*/
int z;
for(z=0;asal_bolenler[z];z++)
{

printf("%d\n",asal_bolenler[z]);
}
/* yazdırıldı */
/*------------------------------------------------------------------------------*/

getche();
getchar(); /* program hemen açılıp kapanmasın diye */
system("PAUSE"); /* program hemen açılıp kapanmasın diye*/
return 0;
}




umarım ihtiyacı olanların işine yarar.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.