輸入一個整數(shù)N,,輸出1-N之間的所有的素數(shù)c++用while語句急急急
抽空編了一下,,通過調(diào)試編譯,用10、100為例,,結(jié)果正確,。
源程序如下,,僅供參考:
#include<stdio.h>
#include<math.h>
int main()
{
int n_input; //輸入的n
int i_sqrt;
int i,j; //循環(huán)變量
int is_prime;//素數(shù)判斷變量
printf("Please INPUT a Positive Number: ");
scanf("%d", &n_input);
printf("Between 1 and %d, the Prime Numbers are:", n_input);
i = 2;//最小素數(shù)為2,,從2開始循環(huán)
while(i <= n_input) //從2到n循環(huán)驗證
{
j = 2;
i_sqrt = (int)sqrt((double)i);//判斷是否素數(shù),從2到√i(根號i)即可,,不用到n
is_prime = 1;//是否素數(shù)賦初值
while(j <= i_sqrt) //從2到√i循環(huán),,判斷i是否能被j整除
{
if(i % j ==0)//i能能被j整除,不是素數(shù)
{
is_prime = 0;//不是素數(shù),,素數(shù)判斷變量置0
break;//已經(jīng)驗證不是素數(shù),,后面的不用再驗證,直接跳出循環(huán)
}
j++;
}
if(is_prime == 1) //如果是素數(shù),打印輸出
printf("%d", i); //輸出控制符使用轉(zhuǎn)義字符''(制表符),,保持輸出美觀
i++;
}
return 0;
}
當n=10(4個素數(shù))時,,輸出結(jié)果:
當n=100時(25個素數(shù)),,輸出結(jié)果: