الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

كيف لي ان اقوم بحساب الـ Prime Numbers ?

Featured Replies

بتاريخ:

لدي السؤال التالي :


Write a Pl/SQL program using While loop , which will accept integer from 1 to 00 and generate the prime numbers as showen in the following output :
The prime numbers from 1 to 50 are as follows :
1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47


أريد ان اعرف كيف لي ان اقوم بحساب Prime numbers بالإضافة إلى While loop

بتاريخ:

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

المشاركه التاليه متشابهه جداً مع ما تطلبه. حول ال basic loop إلى while loop.


بتاريخ:
  • كاتب الموضوع

How can I do it without using procedure ?



Write a Pl/SQL program using While loop , which will accept integer from 1 to 50 and generate the prime numbers as showen in the following output :


The prime numbers from 1 to 50 are as follows :
1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47

بتاريخ:
How can I do it without using procedure


But as you can find out form your above task you should clue this via using a PL/SQL program which means you should create either a procedure or a function. So what do you need exactly? clarify this plz.

the second matter is that whether these prime numbers will be created as they are shown or they will be created according to a specific sequence? if so plz inform me about the mechanism of this sequence nd in turn I will try to answer this or anybody else.

THANKS...
بتاريخ:
  • كاتب الموضوع

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

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


FOR i = 1 to 50
FOR j = 2 to (50-1)
IF mod (50,j)=0
THEN DBMS_output.put_line('It is not a prime ');
else
DBMS_output.put_line(i);

END FOR LOOP
END FOR LOOP





فكرة البرنامج ككل :


Declare

num number :=50;

Begin

DBMS_output.put_line('The prime numbers from 1 to 50 are as follows ');


while mod(num,1)=0 and mod (num,num)=0

loop

DBMS_output.put_line(num);

end loop;

end;
/





بالنسبة لسؤالك ,

these prime numbers will be created as they are shown

سيكون الناتج على الشاشة هو التالي فقط :



The prime numbers from 1 to 50 are as follows :
1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47




ولن نقوم بطلب ادخال قيمة من اليوزر لنحسب البرايم نمبرله , فقط سنحسب البرايم نمبر للعدد 50

تم تعديل بواسطة Computeryah

بتاريخ:

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

كلامك صحيح وهو ده إللي أنا فهمته أول مره. بس إللي لغبطني رقم 2 إللي مكتوب في النتيجه. بالنسبه لسؤالك أنا فهمته خطأ . لو أردت أن تقول بهذا من خلال ال SQL فهذا الكود سوف يفي بما تريد:


select employee_id-99 "Number",decode(mod(employee_id-99,2),0,'PRIM','not prim') "Is prim ?"
from employees where employee_id-99<=50;

بتاريخ:

select employee_id-99 "Number",decode(mod(employee_id-99,2),0,'not prim','PRIM') "Is prim ?"
from employees where employee_id-99<=50;

بتاريخ:
  • كاتب الموضوع

طيب إذا اردنا عمل البرنامج باستخدام الـ while loop ?

كيف يمكننا ذلك ؟



// لم اقم بدراسة الـ function حتى الآن ... > اقصد decode ...

تم تعديل بواسطة Computeryah

بتاريخ:

ال DECODE هي داله FUNCTION يتم دراستها من خلال منهج ال SQL وهي مهمه جداً لإستخدامها في التقارير.
بالنسبه لطلبك بإستخدام ال WHILE LOOP . إللي أعرفه أن ال PRIM NUMBERS هي الأعداد التي لا تقبل القسمه على 2
وهذا هو ال PROCEDURE :

create or replace procedure get_odd(top number)
is
counter number(10):=0;
total number(5):=0;
begin [b]while counter <top loop[/b]
if mod(counter,2)<>0
then
dbms_output.put_line(counter);
total:=total+1;
end if;
counter:=counter+1;
end loop;
dbms_output.put_line('The tatal is '||total);
end;



ولتنفيذه:

EXECUTE get_odd(60);



أتمنى أن أكون نفذت ما تريد وأي سؤال أنا مرحب به جداً...

بتاريخ:
  • كاتب الموضوع

رائع ...

ولكن عندما جربت تنفيذة للرقم 50 يظهر لي مع النواتج رقم 49 و 49 ليس برايم نمبز لانه يقبل القسمة على 7 ..


البرايم نمبر هي الأرقام التي لا تقبل القسمة إلا على نفسها او الرقم 1

تم تعديل بواسطة Computeryah

بتاريخ:
  • كاتب الموضوع

أظن اننا يجب ان نستخدم 2 loop

لنجعل البرنامج يقوم بعمل قسمه على جميع الأرقام


FOR i = 1 to 50
FOR j = 2 to (50-1)

بتاريخ:

أولاً أخي أنا آسف لعدم التكمله معك أمس لإن جهازي فصل مني. وشكراً جداً لأنك فكرتني بمعنى ال prime number لأني كنت ناسيه خاااااااالص فجزاك الله خيراً. مظبوط جداً لازم 2 loop وهايكونوا nested loops . معلش أنا كنت فاهم ال prime غلط عشان كده أنا جاوبت غلط. هاعملها وأرد عليك.....

بتاريخ:

خد جملة ال select هذه تقوم بما تريد:

with t
   as (select level+1 id from dual connect by level < &bound )
   select id from t x1
   where not exists
   (
   select 1 from t x2 where mod(x1.id , x2.id) = 0 and x2.id>1 and x2.id<ceil(x1.id/2)+1
  ) and x1.id<10000 and x1.id>0




للأمانه الموضوع منقول........

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.