在此示例中,您將學(xué)習(xí)如何打印用戶輸入的兩個數(shù)字之間的所有質(zhì)數(shù)。
要理解此示例,您應(yīng)該了解以下C語言編程主題:
#include <stdio.h>
int main() {
int low, high, i, flag;
printf("輸入兩個數(shù)字(間隔): ");
scanf("%d %d", &low, &high);
printf("%d和%d之間的質(zhì)數(shù)為: ", low, high);
//迭代直到low 不等于 high
while (low < high) {
flag = 0;
// 忽略小于2的數(shù)字
if (low <= 1) {
++low;
continue;
}
//如果low為非質(zhì)數(shù),則flag為1
for (i = 2; i <= low / 2; ++i) {
if (low % i == 0) {
flag = 1;
break;
}
}
if (flag == 0){
printf("%d ", low);
}
++low;
}
return 0;
}輸出結(jié)果
輸入兩個數(shù)字(間隔): 20 50 20和50之間的質(zhì)數(shù)為: 23 29 31 37 41 43 47
在此程序中,while循環(huán)被迭代(high-low-1)次。
在每次迭代中,檢查low是否為質(zhì)數(shù),low的值增加1直到low等于high。
訪問此頁面以了解有關(guān)如何檢查數(shù)字是否為質(zhì)數(shù)的更多信息。
如果用戶首先輸入較大的數(shù)字,則上述程序?qū)o法正常工作。您可以通過交換數(shù)字來解決此問題。
#include <stdio.h>
int main() {
int low, high, i, flag, temp;
printf("輸入兩個數(shù)字(間隔): ");
scanf("%d %d", &low, &high);
//如果low大于high則交換數(shù)字
if (low > high) {
temp = low;
low = high;
high = temp;
}
printf("%d和%d之間的質(zhì)數(shù)為: ", low, high);
while (low < high) {
flag = 0;
//忽略小于2的數(shù)字
if (low <= 1) {
++low;
continue;
}
for (i = 2; i <= low / 2; ++i) {
if (low % i == 0) {
flag = 1;
break;
}
}
if (flag == 0)
printf("%d ", low);
++low;
}
return 0;
}訪問此頁面以了解如何通過創(chuàng)建用戶定義的函數(shù)來顯示兩個時間間隔之間的所有質(zhì)數(shù)