PDA

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



elias007
دوشنبه 07 فروردین 1385, 23:53 عصر
سلام
یک برنامه به زبان ++C که اعداد تام رو مشخص کنه؟
توضیح: اعداد تام اعدادی هستند که مقدارشون با مجموع مقسوم الیه های صحیحشون برابر باشه مثل 6=1+2+3
یا 28=14+7+4+2+1
ممنون میشم اگه کسی بتونه جواب یک تازه کار مثل من رو بده.

galaxy.ice
سه شنبه 08 فروردین 1385, 00:22 صبح
راستش اینجا نمیشه درست تایپ کرد.2 تا حلقه ی تو در تو میخاددیگه!
همین

elias007
سه شنبه 08 فروردین 1385, 19:47 عصر
دو حلقه از یک نوع یا با انواع مختلف؟

elias007
سه شنبه 08 فروردین 1385, 19:47 عصر
دو حلقه از یک نوع یا با انواع مختلف؟

seyedof
سه شنبه 08 فروردین 1385, 21:19 عصر
سلام
یک حلقه باید خود عدد باشه بعدش یک حلقه دیگه توی این حلقه. که توی حلقه دومی شما باید مقسوم علیه های عدد حلقه اولی رو پیدا کنید بعدش مجموع مقسوم علیه ها رو یکجا نگهدارید. وقتی برنامه از این حلقه دوم (حلقه داخلی) خارج شد چک کنید که آیا مجموع مقسوم علیه ها با خود عدد (شمارنده حلقه اولی) برابر هست یا نه. البته تا جایی که یادمه تعداد اعداد تام خیلی کمه طوری که تا مثلا 1000 فقط سه چهار تا عدد تام وجود داره.
یه سری قواعد دیگه هم داشت از جمله فکر کنم اینکه تمام اعداد تام شناخته شده زوج هستند ولیکن ثابت نشده که همه اعداد تام زوج خواهند بود.
ممنون علی

hossein_BMI
چهارشنبه 09 فروردین 1385, 14:36 عصر
#include <iostream.h>
#include <math.h>
main()
{
unsigned long int i,j,sqr,sum,max;
cout<<"input max level ";
cin>>max;
for(i=2;i<max;i=i+2)
{
sqr = sqrt(i);
sum =1;
for (j=2;j<sqr;++j)
{
if (i%j ==0) sum = sum +j+(i/j);
}
if (sum == i) cout<<i<<'\n';
}
cout<<"finish";
return 0; }

hossein_BMI
چهارشنبه 09 فروردین 1385, 14:47 عصر
بالاخره تونستم برنامه را جوری بنویسم که درست خوانده بشود.
فکر نمی کنم نیاز به توضیح خاصی داشته باشد.
فقط اگر خواستید برنامه اعداد فرد را برای ÷یدا کردن جواب آزمایش کند بجای

for(i=2;i<max;i=i+2)
در برنامه بنویسید

for(i=2;i<max;++i)


خوب بییید!!!!!