Girilen alt ve üst sınır arasındaki asal sayıları fonksiyon ile belirleyen program.
OBLIGATORY = Girilmesi gerekli alan
ZCRM_ASAL = numc(5) "5 karakter uzunluğunda numerik rakam
NO-ZERO = sayının solundaki sıfırları atmaya yarar
*&---------------------------------------------------------------------
*& Report ZCRM_TEST_14
*&---------------------------------------------------------------------
*& Emre AYDIN
*& İki sayı arasında asal sayı bulan program.
*&---------------------------------------------------------------------
REPORT zcrm_test_14.
DATA lv_bool TYPE c.
DATA lv_temp TYPE zcrm_asal.
**iki adet 1-10000 arası sayı alıyoruz.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-003.
PARAMETERS lv_sayi1 TYPE zcrm_asal OBLIGATORY.
PARAMETERS lv_sayi2 TYPE zcrm_asal OBLIGATORY.
"" girilen ilk sayı büyük olursa.
IF lv_sayi1 > lv_sayi2.
lv_temp = lv_sayi1.
lv_sayi1 = lv_sayi2.
lv_sayi2 = lv_temp.
ENDIF.
SELECTION-SCREEN END OF BLOCK b1.
** girilen lv_sayi1 ile lv_sayi2 arasındaki asal sayıları loop ile bulacağız.
DO.
CALL FUNCTION 'ZCRM_ASAL_HSP'
EXPORTING
sayi1 = lv_sayi1
IMPORTING
bool_asal = lv_bool.
IF lv_bool = 'x'.
WRITE:/ 'Asal sayı - ',lv_sayi1 NO-ZERO.
ENDIF.
IF lv_sayi1 = lv_sayi2.
EXIT.
ENDIF.
lv_sayi1 = lv_sayi1 + 1.
ENDDO.
Asal hesaplama
FUNCTION zcrm_asal_hsp.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(SAYI1) TYPE ZCRM_ASAL
*" EXPORTING
*" REFERENCE(BOOL_ASAL) TYPE BOOLEAN
*"----------------------------------------------------------------------
DATA: lv_temp TYPE i.
DATA: lv_value TYPE i.
DO SAYI1 TIMES.
lv_temp = SAYI1 MOD sy-index.
IF lv_temp EQ 0.
lv_value = lv_value + 1.
ENDIF.
ENDDO.
IF lv_value <> 2.
""asal değil ise -, asal ise x
BOOL_ASAL = '-'.
ELSE.
BOOL_ASAL = 'x'.
ENDIF.
ENDFUNCTION.

Yorum bırakın