求某个范围内的素数,如1-100。
/****求素数 解法1.(先入为主思想)利用标志位来判断****/
#include <stdio.h>
#define MAX 100
void sushu(int num)
{
int flag = 1, i=1, temp = 2;
for(i=1; i<=num; i++)
{
flag = 1; //标志位,默认每个数都是质数
for(temp=2; temp<i; temp++)
{
if(i%temp == 0)
{
flag = 0; //有整除,不是质数
break;
}
}
if(flag == 1)
{
printf("%d是素数..\n",i);
}
}
}
int main(void)
{
sushu(MAX);
return 0;
}
/****求素数 解法2.缩减版,适用于求某个数是否为素数*****/
#include <stdio.h>
#define MAX 100
int sushu02(int i)
{
int j;
for(j=2; j*j<=i; j++)
{
if(i%j == 0)
{
return 0; //返回0为非素数
}
}
return 1; //返回1为素数
}
int main(void)
{
int temp = 0;
for(temp=2; temp<MAX; temp++)
{
if(sushu02(temp) == 1)
{
printf("%d为素数.\n",temp);
}
}
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为素数.