在此示例中,您將學(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ù)