PDA

View Full Version : تشخیص عدد اول و عدد کامل



Abolfazl009
شنبه 20 آبان 1391, 19:20 عصر
سلام.
من یه برنامه میخوام که باید یه عدد رو کاربر وارد کنه و برنامه تشخیص بده که اون عدد اول هست یانه؟! کامل هست یا نه؟ و در نهایت بعد از انجام این کارها، تمام اعداد اولِ قبل از عدد ورودی کاربر رو چاپ کنه. مثلاً اگه کاربر در ابتدا عدد 10 رو وارد کرده، بعد از انجام مراحل بالا اون بیاد و بدون در نظر گرفتن اینکه عدد اول بوده یا نه، اعداد: 2-3-5 و 7 رو روی صفحه چاپ کنه. حالا من کد اون مراحل اولیه رو نوشتم که اینجا میزارم. میخوام ببینم درسته یا نه؟! و اگر میشه لطفاً کد قسمت دوم سئوال رو که باید اعداد اول قبل از ورودی رو چاپ کنه، واسم بنویسین. چون من نتونستم. ممنون میشم اگه همین امشب بزارین. چون باید تا ساعتای 12 میل کنم.

#include<iostream.h>
#include<conio.h>
int main()
{
int n,i,t=0,sum=0;
cin>>n;
for (i=1;i<n;i++)
if (n%i==0)
{
t=t+1;
sum=sum+i;
}
if (t+1==2)
cout<<"عدد اول است";
else
cout<<"عدد اول نیست";
if (sum==n)
cout<<"عدد کامل است";
else
cout<<"عدد کامل نیست";
getch();
return 0;
}

maktoom
شنبه 20 آبان 1391, 19:58 عصر
سلام
خیلی دوست داشتم تا عکسی از قسمت تاپیک های مشابه در زیر همین تاپیک رو براتون میذاشتم تا ببینید این سوال بارها پرسیده شده. به زبان های مختلف.
خودتون می تونید با اسکرول کردن به پایین همین صفحه تاپیکهای مشابه رو مشاهده کنید.
چیزی که خواستین اینجا براتون بنویسن قبلا براتون نوشتن گذاشتن توی تاپیکای دیگه.
موفق باشید.

Abolfazl009
شنبه 20 آبان 1391, 20:15 عصر
سلام
خیلی دوست داشتم تا عکسی از قسمت تاپیک های مشابه در زیر همین تاپیک رو براتون میذاشتم تا ببینید این سوال بارها پرسیده شده. به زبان های مختلف.
خودتون می تونید با اسکرول کردن به پایین همین صفحه تاپیکهای مشابه رو مشاهده کنید.
چیزی که خواستین اینجا براتون بنویسن قبلا براتون نوشتن گذاشتن توی تاپیکای دیگه.
موفق باشید.

دوست عزیز، من اونا رو دیدم. تو برنامه ای که خودمم کدشو گذاشتم، میبینید که قسمت اول سئوالم یعنی تشخیص عدد اول و کامل رو نوشتم.
من کد قسمت دوم سئوالم رو پیدا نمی کنم! یعنی اینکه تمام اعداد اول قبل از اون عددی که کاربر وارد کرده رو بهمون بده!
پ.ن: ضمن اینکه میخواستم ببینم کد خودمم تا همینجایی که نوشتم، درسته یا نه!
ممنون میشم اگه کمکم کنید، دوستان . . .

مسعود اقدسی فام
شنبه 20 آبان 1391, 22:49 عصر
از لحاظ الگوریتمی درست به نظر می‌یاد. برنامه رو اجرا کنید و با عددی مثل 23 و 24 و 26 امتحان کنید. یکی اوله، یکی کامله، یکی هیچ کدوم.

برای چاپ اعداد اول کوچکتر هم یه حلقه تکرار (مثلا i) بذارید که چک کردن اول بودن عدد i رو برای اعداد 2 تا n بررسی کنه.

maktoom
شنبه 20 آبان 1391, 22:58 عصر
در این تاپیک (http://barnamenevis.org/showthread.php?315104-%D9%BE%DB%8C%D8%AF%D8%A7-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF-%D8%A7%D9%88%D9%84-%D9%82%D8%A8%D9%84-%D8%A7%D8%B2-n-%D8%AF%D8%B1-C)مفصل بحث شده.
و در این لینک (http://barnamenevisi-ccj.mihanblog.com/post/8) هم به 3 زبان برنامه نویسی به این مسئله پرداخته شده.

Abolfazl009
سه شنبه 23 آبان 1391, 17:06 عصر
سلام.
دوست خوبم، جناب maktoom (http://barnamenevis.org/member.php?123790-maktoom) کمک کردن و مشکل برطرف شد. ممنون از همه دوستان.
____________________

الان یه مشکل دیگه هستش! من یه برنامه میخوام که یه سری عدد رو دریافت کنه، و تشخیص بده مرتب هستن یا نه! به عبارتی اونا رو مرتب کنه. مسئله اینجاس که نباید از آرایه ها، یا توابع بازگشتی و یا هر چی مثل اینا استفاده کرده! حالا میشه با شرط و حلقه این کار رو انجام داد؟! من این برنامه رو واسه یه تعداد محدودی عدد میخوام.

maktoom
پنج شنبه 25 آبان 1391, 15:53 عصر
سلام
بازم با flag انجامش بده.
یه پرچم بذار هر موقع ترتیب به هم ریخت پرچم مقدارش عوض بشه.
مشخصه دیگه هر عضوی باید از قبلیش کوچکتر و از بعدیش بزرگتر باشه.(یا بالعکس). هر جا این روند انجام نشد پرچم رو 1 کن.
یه کار دیگه هم می تونی بکنی
اونم اینه که ترتیب بزرگتری رو بگیری یه واحد بیشتر کردن و ترتیب کوچکتری رو یه واحد کمتر کردن بگیری.
بعد توی کل اعدادی که از ورودی می گیری این شرط رو چک کنی
اگه ترتیب بزرگتری برقرار بود یه واحد به یه متغیر اضافه کنی اگه ترتیب کوچکتری بود یه واحد کم کنی.
در نهایت باید قدر مطلق اون متغیر اندازه تعداد مقایسه ها باشه.