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 的值而导致错误输出。