ورود ثبت نام
عدد اول در زبان برنامه نویسی C++ با فیلم و سورس کد
» آموزش برنامه نویسی » آموزش ++C » عدد اول در زبان برنامه نویسی C++ با فیلم و سورس کد
41276 بازدید

عدد اول در زبان برنامه نویسی C++ با فیلم و سورس کد

در این قسمت از آموزش زبان برنامه نویسی سی پلاس پلاس نحوه تشخیص عدد اول در C++ برای کاربران عزیز وب سیتی آموزش داده شده است .

عدد اول :

 عددی است که تقسیم بر یک و خودش بشه مثل عدد 7 و 11 و 17 و…. که عدد اول هستند . اعداد اول رو با اعداد فرد اشتباه نگیرید .

الگوریتم و سورس کد عدد اول :

#include <iostream.h> 
#include <conio.h> 
void main(){
 clrscr();
 int n , flag;
 cout <<" Enter a Number:";
 cin >>n;
 flag = 0;
 for(int i = 2; i < n ; i++){
   if( n % i == 0 ){
   flag = 1;
   } 
 }
 if(flag == 0){
   cout <<"Aval ast";
 }else{
    cout <<"Aval Nist";
 }
 getch(); 
}

 

 

سورس کد بالا را در کامپایلر کپی کنید و اجرا کنید برنامه ای خواهید داشت که عدد اول را تشخیص می دهد .

این سورس کد نیز مانند سورس کد جلسه قبل است با این تفاوت که در این سورس کد از flag استفاده کردیم ، اگر عددی که کاربر وارد کرده اگر یک تقسیمی داشت که باقیمانده آن برابر صفر شد مقدار flag برابر 1 خواهد شد .

پس در بیرون از حلقه for  با استفاده از دستور if می توان فهمید که آیا این عددی که کاربر وارد کرده عدد اول است یا نه ، اگر مقدار flag تغییر نکرده باشد یعنی اینکه عدد ، اول است ولی در غیر این صورت عدد اول نیست .

فیلم آموزش تشخیص عدد اول را می توانید از لینک زیر دانلود کنید .

این قطعه کد پایین رو هم یکی از کاربران سایت زحمت کشیدن و نوشتن به نام آقای علی سلطانی که کد و توضیحاتی که خودشون نوشتن رو در پایین مشاهده می کنید .

همین تشخیص عدد اول هستش ولی یکم بهینه تر و اصولی تر نوشتن :

 

#include <iostream>
#include <cmath>
using namespace std;
int main(void) {
    int inNum, flg=1;
    //int x=1;
    cout << "Enter A number:\t";
    cin >> inNum;
    for (int i=2; i <= (sqrt(inNum+1)); i++){
        if(inNum%i == 0) {
            flg = 0;
            break;
        }
        //x++;
    }
    if (flg==1 && inNum>=2) {
        cout << "\t Yeeesss!";
    } else if (flg!=1 || inNum<2) {
        cout << "\t Oh No!";
    }
    //if(inNum>2) cout << "\n\t Number of times the loop runs:\t" << x;
    return 0;
}

توضیحات کد بالا :

 

sqrt(NUMBER);

E1: sqrt(4) is 2

E2: sqrt(1024) is 10

E3: sqrt(7921) is 89

— — –

Sharte Adade Aval: be 1 &amp; Khodesh BakhshPazir Bashad.

Pas Baraye aAadad Aval, Halqeh FOR be Andazeh Adade Voroodi Micharkhad!!!

– — —

(7919 Yek Adad Aval hast.)

Agar Adad Voroodi 7919 Bashad:

for(i=2; i&lt;7919; i++)

if( 7919%i == 0 )

cout &lt;&lt; ADAD AVAL HAST;

E1: 7919 Tashkhis Dar ~7919 Ejraye Halqeh FOR.

E2: 6577 Tashkhis Dar ~6577 Ejraye Halqeh FOR.

E3: 5051 Tashkhis Dar ~5051 Ejraye Halqeh FOR.

E4: 3001 Tashkhis Dar ~3001 Ejraye Halqeh FOR.

E5: 1999 Tashkhis Dar ~1999 Ejraye Halqeh FOR.

E6: 211 Tashkhis Dar ~211 Ejraye Halqeh FOR.

Lotfan Sharte Aval Boodan Ke Bala Goftam Deqat Konid.

Pas Vase Har Adade Aval Andazeh Khode Adad To Halqe FOR Micharkhim.

Masalan AlaAan Ke Adade Voroodi 7919 Hast,

Ba in Hal Bayad ~7919 Bar FOR Ejra Shavad Ke Tashkhis Bede Aval Hast.

— – —

Agar Har Bar Sharte Khatemeh FOR Majzoor Adade Voroodi bashe Chi Mishe???

for (i=2; i&lt;=(sqrt(7919+1)); i++)

if( 7919%i == 0 )

cout &lt;&lt; ADAD AVAL HAST;

E1: 7919 Tashkhis Dar ~88 Ejraye Halqeh FOR.

E2: 6577 Tashkhis Dar ~81 Ejraye Halqeh FOR.

E3: 5051 Tashkhis Dar ~71 Ejraye Halqeh FOR.

E4: 3001 Tashkhis Dar ~54 Ejraye Halqeh FOR.

E5: 1999 Tashkhis Dar ~44 Ejraye Halqeh FOR.

E6: 211 Tashkhis Dar ~14 Ejraye Halqeh FOR.

Hamoon Adade Voroodi To ~88th Bar Tashkhis Dadim Va Dige Lazem Nist Oun Hame Bar Ezafe Ejra Beshavad.

رضا طوماری

دیدگاه



جواب سوال چیه ؟ *

  1. محمود گفت:

    برنامه ای بنویسیدکه یک سری عدد را تا وقتی صعودی است از ورودی گرفته وحاصلجمع این اعداد را محاسبه نماید. وارد شدن یک عددکمتر از عددقبل منجر به خاتمه برنامه میشود.

  2. علی سلطانی گفت:

    یه کوچولو روی سایت کار کنید بهتر بشه، مثلا همین الان متوجه نشدم نظرم ارسال شد یا نه/:

    • رضا طوماری گفت:

      سلام خیلی ممنون که کد رو فرستادید . اگه امکانش هست کد رو به info@web30ty.com ایمیل کنید چون اینجا اینکد میشه و کد ها به هم میریزه .

  3. علی سلطانی گفت:

    سلام
    دست مریزاد!
    ای کاش برای اعداد اول کله گنده، این حلقه مجبور نباشه حتما تا اون عدد برسه!
    مثلا برای 7919 باید حلقه همون تعداد اجرا بشه که خروجی نشون بده عدد اول است که اصلا بنظرم خوب نیست.
    واسه اینکه بهتر بشه میتونیم جذر عدد رو بگیریم و با شمارشگر مقایسه کنیم/:
    هر گاه شمارشگر حلقه بیشتر از جذر عدد مثلا 7919+1 که میشه 88 شد لطفا حلقه خاتمه بده و همچنین پرچم عدد اول رو ببر بالا):
    با این کار کد بهینه تر اجزا میشه و البته دستخوش تغییراتی هم توی کد میشه.
    دوست داشتین بفرمایید تا خودم انجام بدم.
    راهنمایی: واسه جذر هم از تابع sqrt() استفاده کنیم که برای این کار کتابخونه cmath لازمه تا include کنیم.

    • رضا طوماری گفت:

      سلام خیلی ممنون پیام دل گرم کننده تون ، این مثال ها فقط برای شروع کار برنامه نویسی هستش و قطعا همون طور که گفتید میشه خیلی بهینه تر از این ها هم نوشت .
      ولی ما سعی کردیم در ساده ترین حالت آموزش بدیم .
      اگر مایل باشید میتونید کد رو بفرستید تا در همین پست قرار بدیم .

  4. ali گفت:

    بابا دست خوش عاشق سایتت شدم

  5. فرهاد گفت:

    این سورس عدد دو رو عدد اول نشون نمیده که!!!

  6. علیرضا گفت:

    سلام چجوری برنامه ای بنویسم که هم زمان ده تا عدد بگیره اول بودنشو تشخیص بده ? به کمک آرایه

    • رضا طوماری گفت:

      سلام
      کافیه از دوتا حلقه for استفاده بکنید و تو حلقه دومی همین دستور حلقه for رو قرار بدید .

  7. محمد حسین گفت:

    سلام پسوند را موقع اجرا ارور میده دلیلش چیه

  8. mohamad گفت:

    سلام.ممیکن هست سورس برنامه ای رو قرار بدید که وقتی کاربر یک عددی رو وارد میکنه بگه از ۱ تا خود اون عدد چند تا عدد اول وجود داره و عددها رو هم چاپ کنه؟یا اگر تعداد رو هم نمیگه عددها رو چاپ کنه مثلا اگر کاربر 11 رو وارد کرد برنامه اعداد ۲ ۳ ۵ ۷ رو چاپ کنه.

  9. امیر گفت:

    با سلام خیلی ممنون بابت مطالب کوتاه و مفید ببخشید استاد اگه به این برنامه 0 و 1 وارد کنیم هم عدد اول نمایش میده چطور این مشکلو حل کنم با تشکر

    • رضا طوماری گفت:

      سلام
      فقط کافیه یه شرط بزارین که اگه کاربر 0 یا 1 وارد کرد بهش پیغام بده که یه عدد دیگه وارد کنید . این یک روش هست روش های دیگه ای هم هست

      
      #include 
      #include 
      
      void main(){
      	 clrscr();
      
      	 int n, flag ;
      	 cout<<"Enter a Number : ";
      	 cin>>n;
      	 flag=0;
      	 if( n == 0 || n == 1 ){
      	     cout<<"Enter other Number !!!";
      	 }
      	 else{
      
      	     for(int i=2 ; i
      

  10. عاشق برنامه نویسی گفت:

    سلام
    استاد عزیز
    درخواست داشتم برنامه هایی که برای دانشجویان مهندسی نرم افزار مفید باشن رو آموزش بدید
    برای درس برنامه نویسی پیشرفته 1 (c++)
    مثال های ریاضی که با حلقه for حل بشن
    تشکر فراوان