ตามโจทย์ ต้องหาจำนวนเฉพาะที่ใกล้ที่สุด โดยการบวกจำนวนเฉพาะเริ่มจาก 2 หาก N ไม่ใช่จำนวนเฉพาะ
Input: N=6 Output: 11
คำอธิบาย
6 ไม่ใช่จำนวนเฉพาะ บวกจำนวนเฉพาะแรกคือ 2 ได้ 8 แต่ 8 ก็ไม่ใช่จำนวนเฉพาะ บวกจำนวนเฉพาะถัดไปคือ 3 ได้ 8+3 = 11 ซึ่งเป็นจำนวนเฉพาะ ดังนั้นคำตอบคือ 11
อัลกอริทึม
START
Step 1 -> declare num=15, i = num/2
Step 2 -> Loop For k=2 and k<=i and k++
Set l=k/2
Loop For j=2 and j<=l and j++
Set flag=0
If k%j==0
Set flag=1
Break
End
End
IF flag==0
Set num=num+k
End IF
Set a=num/2
Loop For m=2 and m<=a and m++
Set flag1=0
IF num%m==0
Set flag1=1
break
End
END
If flag1==0
Print num
End
END STOP
ตัวอย่างโค้ด (C)
#include <stdio.h>
int main() {
int num = 15;
int i, k, j, sum = 0, flag = 0, l, flag1 = 0, a, m;
i = num / 2;
for (k = 2; k <= i; k++) {
l = k / 2;
for (j = 2; j <= l; j++) {
flag = 0;
if (k % j == 0) {
flag = 1;
break;
}
}
if (flag == 0) {
num = num + k;
}
a = num / 2;
for (m = 2; m <= a; m++) {
flag1 = 0;
if (num % m == 0) {
flag1 = 1;
break;
}
}
if (flag1 == 0) {
printf("%d", num);
return 0;
}
}
}
ผลลัพธ์
17