/**
* 【程序4.1】
* 题目:求100之内的素数(用数组存放)。
* 程序分析:判断素数的方法:用一个数分别去除[2, sqrt(这个数)]之间的所有数,如果能被整除,
* 则表明此数不是素数,反之是素数。
*/
#include <stdio.h>
#include <math.h>
#define N 101
int main()
{
int a[N], i, j, line=0;
for(i=0;i<N;i++)
{
a[i] = i;
}
for(i=0;i<N;i++)
{
if(a[i]==0|a[i]==1)
{
a[i]=0;
}
for(j=2;j<=sqrt(i);j++)
{
if(a[i]%j==0)
{
a[i]=0;
}
}
}
for (i = 0, line = 0; i < N; i++) {
if (a[i] != 0) {
printf("%5d", a[i]);
line++;
}
if (line == 10) {
printf("\n");
line = 0;
}
}
}
/**
* 注:
* 素数:
* 素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。
*
* 思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。
*
* 思路2):另外判断方法还可以简化。m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ sqrt(这个数)之间的每一个整数去除就可以了。如果 m 不能被 2 ~ sqrt(这个数)间任一整数整除,m 必定是素数。例如判别 17 是是否为素数,只需使 17 被 2~4 之间的每一个整数去除,由于都不能整除,可以判定 17 是素数。
*
*/