PDA

View Full Version : فاکتور گیری که نتایج اعداد اول باشند



jaykob
جمعه 27 فروردین 1389, 14:13 عصر
سلام

با یکی سوال توی یک کتاب بر خوردم اما با c نتونستم بنویسمش با c# نوشتمش اما با c نمی دونم چرا هر چی می نویسم نمی شه !

یک پیغام بده که عدد صحیح و مثبتی رو وارد کنید . عدد صحیح رو فاکتور بگیره و نتیجه رو به صورت فاکتور ها ( عوامل ضرب ) چاپ کنه همه فاکتور ها هم عدد اول باشند !!
اینو کمک کنید ممنون می شم که برم سر بحث بعدی قاطی کردم


:قلب:

amin1softco
جمعه 27 فروردین 1389, 15:44 عصر
والا گوگل چیزه خوبه برای این کار چندین الگوریتم وجود داره یکیش اینه :


#include <iostream.h>

void PrimeFactors (int );


int main()
{
int n = 0;
cout<<"\t\tWelcome to Prime Factors program\n\n";
cout<<"Enter the number : ";
cin>>n;
cout<<"\n\n";
PrimeFactors(n);

return 0;
}

void PrimeFactors (int n)
{

int count = 0;
int temp = 0;


for ( int i = 1 ; i <= n ; i++ )
{

int j = i - 1;

while ( j > 1 )
{
if ( i % j == 0 ) //Is PRIME
break;
else
j--;
}

if ( j == 1 )
{
if ( n % i == 0 )
{
cout<<"\n"<<i; //PRIME factor

if ( i > temp )
{ temp = i;
count++;
}
}
}

}

cout<<"\n\nNumber of prime factors of "<<n<<" : "<<count<<"\n\n";
cout<<"Greatest prime factor is "<<temp<<"\n\n";
}}


ولی در کل باید بندازیش داخل یک حلقه که از 2 شروع بشه اگه عدد اول بود که تقسیم و چاپ اگه نبود باید بریم مرحله بعدی . بیهترین کار اینه که یک تابع برای عدد اول تعریف کنی یا یک آرایه که داخلش اعداد اول بین 0 تا 9 باشه
البته این برای تجزیه یک عدد به عوامل اول درسته که فکر کنم منظور شما همین باشه

jaykob
جمعه 27 فروردین 1389, 17:23 عصر
ممنون دوست عزیز اما من اینو با زبان c می خواستم این برنامه ای که شما گذاشتین با c++ هست

همین تفاوت دستوری منو قاطی کرده :عصبانی++:
من از روی کتاب عکس گرفتم که متوجه منظور بشید ...

:قلب:

amin1softco
جمعه 27 فروردین 1389, 17:47 عصر
جواب سوال همینه برای تبدیل کردن به سی از دستور printf از سر فایل stdio.h استفاده می شه همین مثلا این دو خط معادلند:


cout<<"\n"<<i;
printf("\n%d",i);

jaykob
جمعه 27 فروردین 1389, 18:04 عصر
جواب سوال همینه برای تبدیل کردن به سی از دستور printf از سر فایل stdio.h استفاده می شه همین مثلا این دو خط معادلند:


cout<<"\n"<<i;
printf("\n%d",i);


از جوابتون خیلی سپاسگزارم دوست عزیز :آیا فقط cin و cout و فایل سرایند رو به c تبدیل کنم دیگه مشکلی نداره ؟ یا بعضی از Syntax ها هم فرق می کنه


خیلی خیلی خیلی ممنون می شدم اگر همین برنامه رو با c می زاشتید تا من کامل متوجه بشم


بسیار سپاس گذارم :قلب::قلب::قلب:

amin1softco
جمعه 27 فروردین 1389, 19:05 عصر
در خواست کد ممنوعه ولی این می شه به سی



#include <stdio.h>

void PrimeFactors (int );


int main()
{
int n = 0;
printf("\t\tWelcome to Prime Factors program\n\n");
printf("Enter the number : ");
scanf("%d",&n);
printf("\n\n");
PrimeFactors(n);

return 0;
}

void PrimeFactors (int n)
{

int count = 0;
int temp = 0;


for ( int i = 1 ; i <= n ; i++ )
{

int j = i - 1;

while ( j > 1 )
{
if ( i % j == 0 ) //Is PRIME
break;
else
j--;
}

if ( j == 1 )
{
if ( n % i == 0 )
{
printf("\n%d",i); //PRIME factor

if ( i > temp )
{ temp = i;
count++;
}
}
}


}
printf("\n\nNumber of prime factors of %d : %d\n\n",n,count);
printf("Greatest prime factor is %d \n\n",temp);
}

Salar Ashgi
جمعه 27 فروردین 1389, 19:46 عصر
سلام

با یکی سوال توی یک کتاب بر خوردم اما با c نتونستم بنویسمش با C#‎ نوشتمش اما با c نمی دونم چرا هر چی می نویسم نمی شه !

یک پیغام بده که عدد صحیح و مثبتی رو وارد کنید . عدد صحیح رو فاکتور بگیره و نتیجه رو به صورت فاکتور ها ( عوامل ضرب ) چاپ کنه همه فاکتور ها هم عدد اول باشند !!
اینو کمک کنید ممنون می شم که برم سر بحث بعدی قاطی کردم


:قلب:

کاربر گرامی ، باید دوباره یادآوری کنم که :

درخواست انجام تمرینات دانشجویی مخالف قوانین سایت میباشد .

لااقل از خودتون یک کدی (هرچند اشتباه و ناقص) قرار بدید ، تا ما بفهمیم که شما خودتون

روی مساله کار کردین و واقعا هدفتون درخواست راهنمایی است نه کد !!!

چون درخواست راهنمایی ساده بدون هیچ کدی = درخواست کد برنامه

انتظار میرود من بعد ، نکات فوق الذکر حتما رعایت شود .

Salar Ashgi
جمعه 27 فروردین 1389, 19:48 عصر
یه الگوریتمی هم هست که میشه حتی بدون استفاده از تابع اول بودن ، بسط عدد به عوامل اول رو چاپ کرد .