PDA

View Full Version : درخواست راهنمایی برای نوشتن برنامه اعداد اول مدور



fatemeh19
سه شنبه 13 فروردین 1392, 19:15 عصر
سلام
من میخوام برنامه اعداد اول مدور کوچکتر از یک میلیون رو بنویسم اعداد اول مدور اعدادی که با چرخش ارقام باز هم اولند .
من برنامه رو درک میکنم که قراره چکار کنه ،فلوچارتش رو هم کشیدم اما بلد نیستم باکد پشت سر هم بنویسم چندتا هم نوشتم اما هیچ کاری انجام نمیده .
کاریک که مدنظرم هست که انجام بدم اینه که اول، اول بودن عدد رو مشخص کنم بعد تعداد ارقامش رو بعد به تعداد رقم هاش ،ارقام عدد رو بچرخونم و دوباره اول بودنشو بررسی کنم.
میشه یه راهنمایی کوچیک بکنید،چجوری کد نویسی کنم؟؟!!

maktoom
سه شنبه 13 فروردین 1392, 21:16 عصر
سلام
شما اول دو تا برنامه رو بصورت جدا بنویسید بعد باهم ادغام کنید:
اول برنامه ای که بتونه اعداد اول رو حساب کنه.
بعد برنامه ای که بتونه جایگشت بدون تکرار اعداد رو چاپ کنه.

karimi72
چهارشنبه 14 فروردین 1392, 13:31 عصر
منظورت را از مدور بودن نفهمیدم دوست عزیز
اگر منظور شما از مدور بودن این است که مثلا 123 را مدور کنیم می شود 321
برای این کار ظبق گفته دوستمون می تونید از دوبرنامه استفاده کنید یا بهتر بگم از دوتابع یا حتی بدون تابع بنویسی

fatemeh19
چهارشنبه 14 فروردین 1392, 15:59 عصر
منظورت را از مدور بودن نفهمیدم دوست عزیز
اگر منظور شما از مدور بودن این است که مثلا 123 را مدور کنیم می شود 321
برای این کار ظبق گفته دوستمون می تونید از دوبرنامه استفاده کنید یا بهتر بگم از دوتابع یا حتی بدون تابع بنویسی

نه!مدور 123 میشه 321 و 132 !یعنی هربار عدد آخر رو برداریم بذاریم جای عدد اول !البته اینا که اول نیستن مثال درستش میشه :197-791-719
و یه چیزی که هست مبحث تابع ها رو بلد نیستم،باید با while و... بنویسم .
قسمت اول که اول بودن رو تشخیص بده بلدم اما تیکه دوم رو نمیدونم چه جوری با همین دستورهای ساده بنویسم.

smemamian
چهارشنبه 14 فروردین 1392, 18:59 عصر
از غربال اراتستن استفاده کنید، برنامه زیر اعداد اول توسط غربال اراتستن پیدا می کند سپس اعداد رو به تابع reverse می فرستد..

#include <iostream>

using namespace std;

int reverse (int number)
{

int inv = 0;

while (number>0)
{
inv = inv * 10 + (number%10);
number = number / 10;
}
return inv ;
}

void eratosthenes()
{
int array[100];
for(int i=0 ; i<100; i++)
array[i] = 1 ;
for(int i=2 ,j=3 , k=5 , y = 7 ; i<100 ; i +=2 , j+=3,k+=5 ,y+=7)
{
if( i != 2 && j !=3 && k != 5 && y != 7 )
{
array[i] = 0 ;
array[j] = 0 ;
array[k] = 0 ;
array[y] = 0 ;
}
}

for(int i=2 ;i<100 ; i++)
{
if(array[i] == 1 )
cout << "i : " << i << " Reverse number : " << reverse(i) << endl ;
}

}




int main()
{
eratosthenes();


return 0;
}

fatemeh19
چهارشنبه 14 فروردین 1392, 20:01 عصر
از غربال اراتستن استفاده کنید، برنامه زیر اعداد اول توسط غربال اراتستن پیدا می کند سپس اعداد رو به تابع reverse می فرستد..

#include <iostream>

using namespace std;

int reverse (int number)
{

int inv = 0;

while (number>0)
{
inv = inv * 10 + (number%10);
number = number / 10;
}
return inv ;
}

void eratosthenes()
{
int array[100];
for(int i=0 ; i<100; i++)
array[i] = 1 ;
for(int i=2 ,j=3 , k=5 , y = 7 ; i<100 ; i +=2 , j+=3,k+=5 ,y+=7)
{
if( i != 2 && j !=3 && k != 5 && y != 7 )
{
array[i] = 0 ;
array[j] = 0 ;
array[k] = 0 ;
array[y] = 0 ;
}
}

for(int i=2 ;i<100 ; i++)
{
if(array[i] == 1 )
cout << "i : " << i << " Reverse number : " << reverse(i) << endl ;
}

}




int main()
{
eratosthenes();


return 0;
}

خیلی ممنون دوست عزیز بابت وقتی که گذاشتید اما من نه زبان c++ بلدم نه توابع رو خوندم .:متفکر:
این برنامه رو باید با استفاده از حلقه های if ,while ,do,... بنویسم .
به هر حال ممنون :قلب:

MinusOne
جمعه 16 فروردین 1392, 15:14 عصر
خیلی ممنون دوست عزیز بابت وقتی که گذاشتید اما من نه زبان c++ بلدم نه توابع رو خوندم .:متفکر:
این برنامه رو باید با استفاده از حلقه های if ,while ,do,... بنویسم .
به هر حال ممنون :قلب:
یعنی چی ++C بلد نیستین ؟ یعنی مفهوم آرایه ها رو نمی دونین ؟

fatemeh19
جمعه 16 فروردین 1392, 17:41 عصر
[QUOTE=MinusOne;1737164]یعنی چی ++C بلد نیستین ؟ یعنی مفهوم آرایه ها رو نمی دونین ؟[/QUOTE

بله یعنی همین ،فعلا اول راهم.

fatemeh19
جمعه 16 فروردین 1392, 18:25 عصر
دوستان من برنامه رو با حلقه های while , if نوشتم اما یه مشکلی دارم اینه که وقتی به اعداد با رقم یکان 5 مرسه درست عمل نمیکنه و به جای اینکه بره عدد n+2 میره n+4 :افسرده:

مسعود اقدسی فام
جمعه 16 فروردین 1392, 21:49 عصر
دوستان من برنامه رو با حلقه های while , if نوشتم اما یه مشکلی دارم اینه که وقتی به اعداد با رقم یکان 5 مرسه درست عمل نمیکنه و به جای اینکه بره عدد n+2 میره n+4 :افسرده:

کدتون رو بذارید تا بررسی کنیم.

fatemeh19
یک شنبه 25 فروردین 1392, 14:00 عصر
این تابع واسه بررس اول بودن درسته ؟؟!!
int adad_aval(int x)
{
while(r>0 && s<x)
{
r=x%10;
s++;
}
if(r>0)
{
j++;
return x;
}
else
return 1;