• 0
جراند

برنامج لحساب الاعداد التي تقبل القسمه على س في فتره (أ,ب)

سؤال

السلام عليكم و رحمه الله وبركاته

لنفرض ان لدينا فتره (1 , 20 )

و اردنا حساب الاعداد التي تقبل القسمه على عدد بداخل هذه الفتره و لنفرض انه 5

سيكون الناتج ( 5 , 10 , 15 , 20 )

و عدد العناصر لهذه المجموعه هو 4 اعداد

لنفرض اننا نتعامل مع فترات كبيره

من 1000 الى 10000

و اردنا حساب الاعداد التي تقبل القسمه على العدد 1001

ستكون المهمه صعبه بالتاكيد !

طبعا الكود بسيط و اكيد الكثير يعرفونه لكن لامانع من التكرار و الاعاده في مجال العلم

و الحقيقه انه يحل مشاكل كثيره في عالم الرياضيات و هذه هي مهمه الحاسب الالي اليس كذلك :P

#include <iostream>
using namespace std;

void main()
{
long int x;
long int y;
int number;
int count = 0;
long int temp;
cout<<"Welcome to period Program"<<endl;
cout<<"Enter The Number"<<endl;
cin>>number;
cout<<"Enter The First numper in Period"<<endl;
cin>>x;
temp = number;
cout<<"Enter The Last number in Period"<<endl;
cin>>y;
cout<<"[";
while (temp<y)
{
if ( temp%number==0)
{

cout<<temp<<",";
count++;
}

temp++;
}
cout<<"]"<<endl;
cout<<"counter number that divided by "<<number<<" = "<<count<<endl;
cout<<"in period ("<<x<<","<<y<<")"<<endl;




system("pause");
}

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

5 إجابة على هذا السؤال .

  • 0

السلام عليكم ...

موضوع جميل. و لكن يمكنك الحصول على عدد الأعداد التي يمكن قسمتها على عدد ما في فترة discrete بالطريقة التالية. أولاً نفترض أن الفترة مغلقة, أي أن طرفي الفترة ضمن الأعداد المحسوبة:

Let [a, b] be the discrete interval with b >= a, and we want to check how many numbers in that interval divide the number "c". Then:
number of numbers that divide c = floor(b/c) - floor((a-1)/c)

هذه الطريقة سهلة الإثبات, فكر في أنك تقوم بحساب عدد مضاعفات العدد c في الفترة من a إلى b.

تحياتي...

تم تعديل بواسطه Khaled.Alshaya
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هنلك بعض الملاحظات على الكود

اولاً :

يجب ان تكتب اللوب بهذا الشكل لانه لو طبقه مثلك في اول في الفترى من 1 - 20 والرقم خمسه لن تضهر ال 20 بالجواب


while (temp<=y)
{
if ( temp%number==0)
{

cout<<temp<<",";
count++;
}

temp++;
}

ثانياً ان يف البرنامج الاصلي انك تكتب فاصله بعد اخر رقم وهذا امر خاطئ يجيب ان يكون عدد الفواصل اقل من الاعداد بواحد


#include <iostream>
using namespace std;

void main()
{
long int x;
long int y;
int number;
int count = 0;
long int temp;
cout<<"Welcome to period Program"<<endl;
cout<<"Enter The Number"<<endl;
cin>>number;
cout<<"Enter The First numper in Period"<<endl;
cin>>x;
temp = number;
cout<<"Enter The Last number in Period"<<endl;
cin>>y;
cout<<"[";
while (temp<=y)
{
if ( temp%number==0)
{
if(count !=0)
cout<<",";
cout<<temp;
count++;
}

temp++;
}
cout<<"]"<<endl;
cout<<"counter number that divided by "<<number<<" = "<<count<<endl;
cout<<"in period ("<<x<<","<<y<<")"<<endl;




system("pause");
}

واخيراً كما تفضلت بسؤال ماذا لو كانت الفترى كبيره والعدد المدخل كبير فان عمليتك سوف تكون بطيئه كثير يمكن تسريعها بزياده قيمه العدد كتالي :


#include <iostream>
using namespace std;

void main()
{
long int x;
long int y;
int number;
int count = 0;
long int temp;
cout<<"Welcome to period Program"<<endl;
cout<<"Enter The Number"<<endl;
cin>>number;
cout<<"Enter The First numper in Period"<<endl;
cin>>x;
temp = number;
cout<<"Enter The Last number in Period"<<endl;
cin>>y;
cout<<"[";

while (temp<=y)
{
if ( temp%number==0)
break;
temp ++;
}

while (temp<=y)
{
if(count !=0)
cout<<",";
cout<<temp;
count++;

temp+=number;
}
cout<<"]"<<endl;
cout<<"counter number that divided by "<<number<<" = "<<count<<endl;
cout<<"in period ("<<x<<","<<y<<")"<<endl;




system("pause");
}

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ...

موضوع جميل. و لكن يمكنك الحصول على عدد الأعداد التي يمكن قسمتها على عدد ما في فترة discrete بالطريقة التالية. أولاً نفترض أن الفترة مغلقة, أي أن طرفي الفترة ضمن الأعداد المحسوبة:

Let [a, b] be the discrete interval with b >= a, and we want to check how many numbers in that interval divide the number "c". Then:
number of numbers that divide c = floor(b/c) - floor((a-1)/c)

هذه الطريقة سهلة الإثبات, فكر في أنك تقوم بحساب عدد مضاعفات العدد c في الفترة من a إلى b.

تحياتي...

يعطيك العافيه اخوي على المرور

و اكيد فيه اكثر من طريقه

بس ياليت توضح القانون هذا

c = floor(b/c) - floor((a-1)/c

هنلك بعض الملاحظات على الكود

اولاً :

يجب ان تكتب اللوب بهذا الشكل لانه لو طبقه مثلك في اول في الفترى من 1 - 20 والرقم خمسه لن تضهر ال 20 بالجواب


while (temp<=y)
{
if ( temp%number==0)
{

cout<<temp<<",";
count++;
}

temp++;
}

ثانياً ان يف البرنامج الاصلي انك تكتب فاصله بعد اخر رقم وهذا امر خاطئ يجيب ان يكون عدد الفواصل اقل من الاعداد بواحد


#include <iostream>
using namespace std;

void main()
{
long int x;
long int y;
int number;
int count = 0;
long int temp;
cout<<"Welcome to period Program"<<endl;
cout<<"Enter The Number"<<endl;
cin>>number;
cout<<"Enter The First numper in Period"<<endl;
cin>>x;
temp = number;
cout<<"Enter The Last number in Period"<<endl;
cin>>y;
cout<<"[";
while (temp<=y)
{
if ( temp%number==0)
{
if(count !=0)
cout<<",";
cout<<temp;
count++;
}

temp++;
}
cout<<"]"<<endl;
cout<<"counter number that divided by "<<number<<" = "<<count<<endl;
cout<<"in period ("<<x<<","<<y<<")"<<endl;




system("pause");
}

واخيراً كما تفضلت بسؤال ماذا لو كانت الفترى كبيره والعدد المدخل كبير فان عمليتك سوف تكون بطيئه كثير يمكن تسريعها بزياده قيمه العدد كتالي :


#include <iostream>
using namespace std;

void main()
{
long int x;
long int y;
int number;
int count = 0;
long int temp;
cout<<"Welcome to period Program"<<endl;
cout<<"Enter The Number"<<endl;
cin>>number;
cout<<"Enter The First numper in Period"<<endl;
cin>>x;
temp = number;
cout<<"Enter The Last number in Period"<<endl;
cin>>y;
cout<<"[";

while (temp<=y)
{
if ( temp%number==0)
break;
temp ++;
}

while (temp<=y)
{
if(count !=0)
cout<<",";
cout<<temp;
count++;

temp+=number;
}
cout<<"]"<<endl;
cout<<"counter number that divided by "<<number<<" = "<<count<<endl;
cout<<"in period ("<<x<<","<<y<<")"<<endl;




system("pause");
}

بارك الله فيك على المرور و المشاركه

و ملاحظاتك في محلها

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جرب هذا



#include<iostream>





using namespace std;



int main()

{

unsigned int i,max,min,n,count=0;

//Get the Max And Min Number

cout<<"Enter MAX and MIN Number : ";

cin>>max>>min;

cout<<"Enter the Devision Number:";

cin>>n;



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

if(i%n==0)

{

cout<<" "<<i;

count++;

}

cout<<"\nThe Total Count between("<<min<<") and ("<<max<<") Accept Division by("<<n<<")="<<count;

system("pause");

return 0;

}





[font="Times New Roman"][size="3"] [/size][/font]

تحياتي

تم تعديل بواسطه omani
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جرب هذا



#include<iostream>





using namespace std;



int main()

{

unsigned int i,max,min,n,count=0;

//Get the Max And Min Number

cout<<"Enter MAX and MIN Number : ";

cin>>max>>min;

cout<<"Enter the Devision Number:";

cin>>n;



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

if(i%n==0)

{

cout<<" "<<i;

count++;

}

cout<<"\nThe Total Count between("<<min<<") and ("<<max<<") Accept Division by("<<n<<")="<<count;

system("pause");

return 0;

}





[font="Times New Roman"][size="3"] [/size][/font]

تحياتي

يعمل 100%

جزاك الله خير على المرور

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .