الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه جراند في 17 يوليو 2010 · 5 رد · 2,043 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لنفرض ان لدينا فتره (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
#2

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

موضوع جميل. و لكن يمكنك الحصول على عدد الأعداد التي يمكن قسمتها على عدد ما في فترة 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 في 17 يوليو 2010 في 22:46

#3

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

اولاً :

يجب ان تكتب اللوب بهذا الشكل لانه لو طبقه مثلك في اول في الفترى من 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");
}
#4
Khaled.Alshaya كتب:

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

موضوع جميل. و لكن يمكنك الحصول على عدد الأعداد التي يمكن قسمتها على عدد ما في فترة 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

Ali Al-Zyoud كتب:

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

اولاً :

يجب ان تكتب اللوب بهذا الشكل لانه لو طبقه مثلك في اول في الفترى من 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");
}

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

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

#5

جرب هذا

#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; 

}

تحياتي

تم تعديل هذه المشاركة بواسطة omani في 20 يوليو 2010 في 17:06

1

OMANI FOR EVER

-------------------------------------------------

post-12787-12780191801974.jpg

-------------------------------------------------

#6
omani كتب:

جرب هذا

#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; 

}

تحياتي

يعمل 100%

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

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…