#include<stdio.h>
int isprime(int n)
{
int i;
for(i=2;i<=n/2;i++)
{
if(n%i==0) return 0; //若能够整除,则不是素数
}
return 1; //若不能整除,则是素数
}
int main()
{
int n;
for(n=2;n<=1000;n++) //1不是素数,从2开始
{
if(isprime(n)) //若n为素数,打印
{
printf("%d\n",n);
}
}
return 0;
}
在isprime()
函数中,一旦找到一个能整除n
的数(即n % i == 0
成立),函数就会立即返回0
,表示n
不是素数。由于函数在找到第一个这样的数后就返回了,它不会继续检查其他数,因此isprime()
函数对于给定的n
只会返回一次0
(如果n
不是素数的话)或者一次1
(如果n
是素数的话)。
这里是一个简化的逻辑流程,说明了isprime()
函数是如何工作的:
- 检查
n
是否小于或等于1,如果是,则立即返回0
(因为1和负数不是素数)。 - 初始化一个循环,从
2
开始,直到sqrt(n)
(包含)。 - 在循环中,对于每个
i
,检查n % i
是否等于0
。- 如果等于
0
,则n
能被i
整除,因此n
不是素数,函数返回0
。 - 如果不等于
0
,则继续循环,检查下一个i
。
- 如果等于
- 如果循环完成而没有找到任何能整除
n
的数,则n
是素数,函数返回1
。
由于这个逻辑,isprime()
函数对于给定的n
只会返回一次值(要么是0
,要么是1
),并且一旦返回,函数就会结束执行。因此,它不会多次返回0
或任何其他值。