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
STOPVí 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