#include <stdio.h>
int prime(int n){
int i = 1;
for(i = 2;i < n;i++)
{
if(n % i == 0)
return 0;
}
return 1;
}
//打印100-200之间的素数
int main()
{
int n = 0;
int j = 100;
for(j = 100;j <= 200;j++)
{
if(prime(j))
{
printf("%d是素数\n",j);
n++;
}
}
printf("100-200之间素数有%d个\n",n);
/*scanf("%d",&n);
if(prime(n))
printf("%d是素数\n",n);
else
printf("%d不是素数\n",n);*/
return 0;
}
还可以改进,如果n = m * m,a * b = n,那么a,b中必定有一个数 <= m。
sqrt是数学库函数,开平方,使用时需包含头文件math.h。
#include <stdio.h>
#include <math.h>
int prime(int n){
int i = 1;
for(i = 2;i <= sqrt((double)n);i++)
{
if(n % i == 0)
return 0;
}
return 1;
}
//打印100-200之间的素数
int main()
{
int n = 0;
int j = 100;
for(j = 100;j <= 200;j++)
{
if(prime(j))
{
printf("%d是素数\n",j);
n++;
}
}
printf("100-200之间素数有%d个\n",n);
system("pause");
return 0;
}
这样也可以得出正确的结果:
偶数一定能被2整除,不是素数。可以再改进一下,从101开始,每次递增2
#include <stdio.h>
#include <math.h>
int prime(int n){
int i = 1;
for(i = 2;i <= sqrt((double)n);i++)
{
if(n % i == 0)
return 0;
}
return 1;
}
//打印100-200之间的素数
int main()
{
int n = 0;
int j = 100;
for(j = 101;j <= 200;j = j + 2)
{
if(prime(j))
{
printf("%d是素数\n",j);
n++;
}
}
printf("100-200之间素数有%d个\n",n);
return 0;
}