Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

In các số nguyên tố có tổng chữ số cũng là số nguyên tố trong mảng

Cho một mảng các phần tử và nhiệm vụ là in những số mà tổng chữ số của chúng cũng là số nguyên tố, trả về -1 nếu không có số nào thỏa mãn trong mảng.

Input: arr[]={2,4,3,19,25,6,11,12,18,7}
Output : 2, 3, 25, 11, 12, 7

Ở đây, đầu ra được tạo ra vì nó chứa những số cộng tính có tổng cũng là số nguyên tố như: 2, 3, 7 là số nguyên tố nhưng 25(2+5=7), 11(1+1=2), 12(1+2=3) cũng là số nguyên tố trong khi các số như 19(1+9=10) không phải số nguyên tố.

Thuật toán

START
Step 1 -> Take array of int with values
Step 2 -> declare start variables as i, m, flag, flag1, sum, r, d, j, tem
Step 3 -> store size of array in m as sizeof(arr)/sizeof(arr[0])
Step 4 -> Loop For i=1 and i<m and i++
  Set flag=flag1=sum=0
  Set d=int(arr[i]/2
  Loop For j=2 and j<=d and j++
    IF arr[i]%j==0
      Set flag=1
      Break
    End IF
  End
  IF flag=0
    Set tem=arr[i]
    Loop While tem
      Set r=tem%10
      Set sum=sum+r
      Set tem=tem/10
    End
    Set d=int(sum/2)
    Loop For j=2 and j<=d and j++
      IF sum%j=0
        Set flag1=1
        break
      End
    End
    IF flag1=0
      Print arr[i]
    End
  End
End
STOP

Ví dụ

#include<iostream>
using namespace std;

int main(){
  int arr[]={2,4,3,19,25,6,11,12,18,7};
  int i,m,flag,flag1,sum,r,d,j,tem;
  m=sizeof(arr)/sizeof(arr[0]);
  for(i=0;i<m;i++) {
    flag=flag1=sum=0;
    d=int(arr[i]/2);
    for(j=2;j<=d;j++){
      if(arr[i]%j==0) {
        flag=1;
        break;
      }
    }
    if(flag==0) {
      tem=arr[i];
      while(tem) {
        r=tem%10;
        sum=sum+r;
        tem=tem/10;
      }
      d=int(sum/2);
      for(j=2;j<=d;j++) {
        if(sum%j==0){
          flag1=1;
          break;
        }
      }
      if(flag1==0){
        cout<<arr[i]<<" ";
      }
    }
  }
}

Kết quả

Nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra đầu ra sau

2 3 11 25 12 7