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

معرفه الاعداد الوليه

بدأه Ahmad Alkaraki في 11 مارس 2011 · 7 رد · 734 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اريد حل لسؤال ان يدخل المستخدم مثلا 10 ارقام ويطبع البرنامج فقط الاعداد الاوليه وذلك باستخدام المصفوفه؟

وشكرا لكم.

#2

اتفضل اخ احمد

#inclode<iostream.h>
void main(){
int a[9];
cout<<"enter the number"<<endl;
for(int i=0;i<n;i++)
cin>>a;
for(int i=0;i<n;i++)
if(a%2==1)
cout<<a<<endl;
}
#3

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

لمعرفة ما إذا كان العدد أولي أم لا يمكنك إستخدام الطريقة التالية

العدد الأولي هو العدد الذي لا يقبل القسمة إلا على نفسه و الواحد

فهو لا يقبل القسمة على الأعداد من 2 إلى العدد الذي ينقصه بواحد

لكن لتبسيط الأعداد نقوم بالتالي(خصوصا للأعداد الكبيرة)

أولا تأخذ الجذر التربيعي للعدد (يجب أن يكون عدد موجب)

و بعدها تقوم بعمل for loop من 2 إلى الجذر التربيعي للعدد

إذا قبل القسمة على أحد هذه الأرقام فهو ليس عدد أولي و إذا أكمل و لم يقبل القسمة على أي من هذه الأعداد (من 2 إلى الجذر التربيعي) فهو عدد أولي و يقوم بطباعته

طبعا في ما عدا الصفر و الواحد

و بما أنك تريد عمل هذا لـ 10 أعداد في مصفوفة فعليك عمل هذا كله في for loop

هذه الطريقة التي أعرفها و ربما هناك طريقة أبسط الله أعلم

بالتوفيق ..

تم تعديل هذه المشاركة بواسطة TheUnknown في 12 مارس 2011 في 15:08

كلما أدبني الدهر ... أراني نقص عقلي

كلما أزددت علما ... زادني علما بجهلي

#4

you can use the Trial division algorithm and i think it is the most popular algorithm used to test primality of an integer

chk_primality(int num) { 
for x = 2 to root(num) {
if num%x = 0 return FALSE 
}
return True

this not the code but u can understand what i mean and write your own code

the idea is to test if a given number is divisible by any number from 2 to the root the it and if true then it is not an prime number

else it is a prime number

one extra point i wanna say

the Trial division is not for primality test only it is an algorith mwhich used to check if integer X divisible by any integer greater that one but less than X

but for simplicity and efficiency we only test from one to the root of the number

and sorry for my english xD

one extra point for efficiency

u can escape all even number except 2

cuz if an number X is divisable by any even number then it is divisible by 2

reduce the numbers space

so you increase the efficiency of your function

#5
طال الانتظار كتب:

اتفضل اخ احمد

#inclode<iostream.h>
void main(){
int a[9];
cout<<"enter the number"<<endl;
for(int i=0;i<n;i++)
cin>>a;
for(int i=0;i<n;i++)
if(a%2==1)
cout<<a<<endl;
}

شكرا الك اخي طال الانتظار بس في عندي ملاحظه :

1-يوجد عند تنفيذ البرنامج خطئين عند cinn و cout بضل يعطيني عليهم غلط مش عارف ليش ومع ذلك شكرا الك

TheUnknown كتب:

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

لمعرفة ما إذا كان العدد أولي أم لا يمكنك إستخدام الطريقة التالية

العدد الأولي هو العدد الذي لا يقبل القسمة إلا على نفسه و الواحد

فهو لا يقبل القسمة على الأعداد من 2 إلى العدد الذي ينقصه بواحد

لكن لتبسيط الأعداد نقوم بالتالي(خصوصا للأعداد الكبيرة)

أولا تأخذ الجذر التربيعي للعدد (يجب أن يكون عدد موجب)

و بعدها تقوم بعمل for loop من 2 إلى الجذر التربيعي للعدد

إذا قبل القسمة على أحد هذه الأرقام فهو ليس عدد أولي و إذا أكمل و لم يقبل القسمة على أي من هذه الأعداد (من 2 إلى الجذر التربيعي) فهو عدد أولي و يقوم بطباعته

طبعا في ما عدا الصفر و الواحد

و بما أنك تريد عمل هذا لـ 10 أعداد في مصفوفة فعليك عمل هذا كله في for loop

هذه الطريقة التي أعرفها و ربما هناك طريقة أبسط الله أعلم

بالتوفيق ..

شكرال الك على هذه المعلومات

IaM Hesham كتب:

you can use the Trial division algorithm and i think it is the most popular algorithm used to test primality of an integer

chk_primality(int num) { 
for x = 2 to root(num) {
if num%x = 0 return FALSE 
}
return True

this not the code but u can understand what i mean and write your own code

the idea is to test if a given number is divisible by any number from 2 to the root the it and if true then it is not an prime number

else it is a prime number

one extra point i wanna say

the Trial division is not for primality test only it is an algorith mwhich used to check if integer X divisible by any integer greater that one but less than X

but for simplicity and efficiency we only test from one to the root of the number

and sorry for my english xD

one extra point for efficiency

u can escape all even number except 2

cuz if an number X is divisable by any even number then it is divisible by 2

reduce the numbers space

so you increase the efficiency of your function

شكرا الك على مجهودك

#6

then the worst case in here is ((root(x)/2)

i think it is right but if there is any wrong with my replay plz till me

xD

تم تعديل هذه المشاركة بواسطة IaM Hesham في 12 مارس 2011 في 16:17

#7
Ahmad Alkaraki كتب:

شكرا الك اخي طال الانتظار بس في عندي ملاحظه :

1-يوجد عند تنفيذ البرنامج خطئين عند cinn و cout بضل يعطيني عليهم غلط مش عارف ليش ومع ذلك شكرا الك

يجب عليك إزالة الـ n و وضع 10 مكانها

أو أن تقوم بتعريفها و تضع لها قيمة 10

و معلومة ثانية

الكود السابق يقوم بطباعة الأرقام الفردية (الأرقام الأولية كلها فردية و لكن الأرقام الفردية ليست كلها أولية كـ 9 , 15 , 21 كلها أرقام فردية و لكن ليست أولية)

بالتوفيق ..

1

كلما أدبني الدهر ... أراني نقص عقلي

كلما أزددت علما ... زادني علما بجهلي

#8
 /*
 * test.cpp
 *
 *  Created on: ١٣‏/٠٣‏/٢٠١١
 *  	Author: oracle_java
 */
#include <iostream>
using std::cout;
using std::endl;

bool isPrime(const int& num) {
 if (num == 1 || num == 3 || num == 5) {
  return true;
 }

 int i;
 for (i = 2; i < 6; ++i) {
  if ((num % i) == 0)
   return false;
 }

 return true;
}

int main(int argc, char* argv[]) {

 for (int i = 0; i <= 200; ++i) {
  if (isPrime(i))
   cout << i << ' ';
 }

 return EXIT_SUCCESS;

}

تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 13 مارس 2011 في 13:25


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

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