判别m是否为素数
#include <stdio.h>
int main()
{
int i, m;
int is_prime=1;
scanf("%d", &m);
for(i=2; i<=m-1; i++)
{
if(m%i==0)
is_prime=0;
}
if(is_prime==1)
printf("%d 是素数!\n", m);
else
printf("%d 不是素数!\n", m);
return 0;
}
改进:及时退出(更省时的算法)
#include <stdio.h>
int main()
{
int i, m;
int is_prime=1;
scanf("%d", &m);
for(i=2; i<=m-1; i++)
{
if(m%i==0)
{
is_prime=0;
break; //及时退出
}
}
if(is_prime==1)
printf("%d 是素数!\n", m);
else
printf("%d 不是素数!\n", m);
return 0;
}
改进:再减少循环次数
#include <stdio.h>
#include <math.h>
int main()
{
int i, m, k;
int is_prime=1;
scanf("%d", &m);
k=sqrt(m);
for(i=2; i<=k; i++) //最多循环到 k
{
if(m%i==0)
{
is_prime=0;
break; //及时退出
}
}
if(is_prime==1)
printf("%d 是素数!\n", m);
else
printf("%d 不是素数!\n", m);
return 0;
}
找出100~200间的全部素数
#include <stdio.h>
#include <math.h>
int main()
{
int i, m, k, n=0;
int is_prime;
for(m=101; m<=200; m=m+2)
{
is_prime=1;
k=sqrt(m);
for(i=2; i<=k; i++) //最多循环到 k
{
if(m%i==0)
{
is_prime=0;
break; //及时退出
}
}
if(is_prime==1)
{
printf("%d\t", m);
n++;
if(n%5==0) printf("\n");
}
}
return 0;
}