要求:将0-100之间的素数全部输出
思路:素数是大于1的整数,除了能被自身和1整除之外,不能被其他整数整除
运行结果如下
法一:最基础的思路,利用素数的定义作为判断语句的判断条件
参考代码如下
#include<stdio.h>
#include<stdlib.h>
int main ()
{
int i, j, n = 0;
printf ("1-100之间的素数为:\n");
for (i = 2; i <= 100; i++)
{
for(j = 2;j <=100; j++)
{
if (i % j == 0)
break;
}
if (i == j)
{
printf ("%3d ", i); //%3d 输出是为了让输出格式更好看
n++;
if (n % 5 == 0) //这里的意思是,每五个数进行一次换行
printf("\n");
}
}
return 0;
}
法二:1.简化程序,让一个整数 i 被从2 到 根号 i 除,如果 i 能被其中任意一个整数整除,则结束循环
2.若不能被整除,则要判断 j 是否是最接近或等于 根号i 的,如果是则证明是素数,否则进行下次循环
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main ()
{
int i, j, n = 0;
printf ("1-100之间的素数为: \n");
for (i = 2; i <= 100; i++)
{
for (j = 2; j <= sqrt(i); j++)
{
if (i % j == 0)
break;
}
if (j > sqrt(i))
{
printf ("%d ", i);
n++;
if( n % 5 == 0)
printf ("\n");
}
}
printf ("\n");
return 0;
}