ตามคำถาม ภารกิจคือการหาจำนวนเฉพาะที่ใกล้ที่สุดโดยการเพิ่มจำนวนเฉพาะที่เริ่มจาก 2 หากตัวเลข N ไม่ใช่จำนวนเฉพาะ
Input: N=6 Output: 11
คำอธิบาย
เนื่องจาก 6 ไม่ใช่จำนวนเฉพาะ เพิ่มจำนวนเฉพาะตัวแรกเป็น 6 เช่น 2 ซึ่งจะส่งผลให้เป็น 8 ตอนนี้ 8 ไม่ใช่จำนวนเฉพาะ ตอนนี้เพิ่มจำนวนเฉพาะตัวถัดไปหลังจาก 2 ซึ่งเป็น 3 ซึ่งจะให้ 8+3 =11 ดังนั้น 11 จะเป็นผลลัพธ์ของจำนวนเฉพาะ 11.
อัลกอริทึม
START Step 1- > declare num=15, i = num/2 Step 2 -> Loop For k=2 and k<=i and k++ Set I=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
ตัวอย่าง
#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