English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمات Java الأساسية

Java التحكم في العملية

Java مصفوفة

Java موجه الأجسام (I)

Java موجه الأجسام (II)

Java موجه الأجسام (III)

معالجة الاستثناءات في Java

Java قائمة (List)

Java Queue (الصف)

Java Map Collections

Java Set Collections

Java Input/Output (I/O)

Java Reader/Writer

مواضيع أخرى في Java

برنامج Java للبحث عن عامل عدد

جميع الأمثلة على Java

في هذا البرنامج، ستتعلم كيفية استخدام حلقات for و while في Java للبحث عن عامل عدد.

عامل الموجب يتكون من الصيغة التالية: n

عامل الموجب (n!) = 1 * 2 * 3 * 4 * ... * n

مثال 1: البحث عن عامل عدد باستخدام حلقة for

public class Factorial {
    public static void main(String[] args) {
        int num = 10;
        long factorial = 1;
        for(int i = 1; i <= num; ++i)
        {
            // factorial = factorial * i;
            factorial *= i;
        }
        System.out.printf("عامل %d = %d ", num, factorial);
    }
}

عند تشغيل هذا البرنامج، الناتج هو:

عامل 10 = 3628800

في هذا البرنامج، نستخدم حلقة for لتدوير جميع الأرقام بين 1 وعدد المحدد num (10)، وكل منتج حتى num يتم تخزينه في متغير factorial.

نستخدم long بدلاً من int لتخزين القيم الكبيرة لعامل، ولكنها ليست كافية لتخزين قيم أكبر (مثل عامل 100)

للبحث عن النتائج التي لا يمكن تخزينها في متغير long، نستخدم متغير BigInteger المعلن في مكتبة java.math.

مثال 2: استخدامه BigInteger للبحث عن قيمة عامل عدد

import java.math.BigInteger;
public class Factorial {
    public static void main(String[] args) {
        int num = 30;
        BigInteger factorial = BigInteger.ONE;
        for(int i = 1; i <= num; ++i)
        {
            // factorial = factorial * i;
            factorial = factorial.multiply(BigInteger.valueOf(i));
        }
        System.out.printf(" %d عامل = %d ", num, factorial);
    }
}

عند تشغيل هذا البرنامج، الناتج هو:

عامل 30 = 265252859812191058636308480000000

في هذا المكان، نستخدم BigInteger بدلاً من long لتخزين القيمة المثلثية.

بسبب أن * لا يمكن استخدامه مع BigInteger، لذا نستخدم multiply() لهذا المنتج. بالإضافة إلى ذلك، يجب تحويل num إلى BigInteger بشكل قسري للقيام بالضرب.

لأن * لا يمكن استخدامه مع BigInteger، لذا نستخدم multiply() لل حساب. بالإضافة إلى ذلك، يجب تحويل num إلى BigInteger لتحقيق عملية الضرب.

بالمثل، يمكننا استخدام دورة while لحل هذه المشكلة.

مثال 3: استخدام دورة while للبحث عن مضاعف عدد

public class Factorial {
    public static void main(String[] args) {
        int num = 5, i = 1;
        long factorial = 1;
        while(i <= num)
        {
            factorial *= i;
            i++;
        }
        System.out.printf("%d! = %d", num, factorial);
    }
}

عند تشغيل هذا البرنامج، الناتج هو:

5! = 120

في البرنامج المذكور أعلاه، بخلاف الدورة for، يجب علينا زيادة قيمة i داخل الدورة.

على الرغم من أن كلا البرنامجين تقنياً صحيحين، إلا أن من الأفضل استخدام دورة for في هذه الحالة. لأن عدد التكرارات (أقصاها num) معروف.

جميع الأمثلة على Java