0-100間素數
-
算法思路:
1、參考判斷素數程序
2、加入循環實現0-100間素數輸出 -
代碼如下:
//輸出0-100內素數
#include<stdio.h>
int main()
{
int a;
int i;
int count=0;
int isprime=1; //a是素數
for(a=2;a<100;a++){
for(i=2;i<a;i++){
if(a%i==0){
isprime=0;
break;
}
}
if(isprime==1){
count++;
printf("%d\t ",a); //水平製表符
if(count%5==0){
printf("\n"); //換行符
}
}
isprime=1;
}
return 0;
}
輸出結果:
2 3 5 7 11
13 17 19 23 29
31 37 41 43 47
53 59 61 67 71
73 79 83 89 97
--------------------------------
Process exited after 0.3817 seconds with return value 0
請按任意鍵繼續. . .
代碼分析:
根據上一個程序改編而成,主要加了0-100內數值循環這個選項,這裏一定要注意 if 、while 、for 等循環語句中有{ }和沒有的區別,尤其是在改動語句的時候一定要注意。
連續輸出100個素數
-
算法思想:
1、設置計數器用於檢驗是否達到100個素數;
2、利用 for 和 while 循環均可以達到效果; -
代碼如下:
// 輸出50個連續素數
#include<stdio.h>
int main()
{
int a=2;
int i;
int count=0;
int isprime=1; //a是素數
for(a=1;count<100;a++)
//while(count<100)
{
for(i=2;i<a;i++){
if(a%i==0){
isprime=0;
break;
}
}
if(isprime==1){
count++;
printf("%d\t ",a);
if(count%5==0){
printf("\n");
}
}
isprime=1;
// a++;
}
return 0;
}
輸出:
1 2 3 5 7 11 13 17 19 23
29 31 37 41 43 47 53 59 61 67
71 73 79 83 89 97 101 103 107 109
113 127 131 137 139 149 151 157 163 167
173 179 181 191 193 197 199 211 223 227
229 233 239 241 251 257 263 269 271 277
281 283 293 307 311 313 317 331 337 347
349 353 359 367 373 379 383 389 397 401
409 419 421 431 433 439 443 449 457 461
463 467 479 487 491 499 503 509 521 523
--------------------------------
Process exited after 0.2975 seconds with return value 0
請按任意鍵繼續. . .
代碼分析:
這裏說一下程序第26行中 isprime=1;對isprime初始化意義:當不是素數時,經過第15行的 isprime=0 會使isprime的值變爲 0 ,由於 isprime 的聲明語句在整個循環外部,所以即使下一個爲素數,也會因爲 isprime 的值而導致錯誤輸出。