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 عصر
یه الگوریتمی هم هست که میشه حتی بدون استفاده از تابع اول بودن ، بسط عدد به عوامل اول رو چاپ کرد .
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.