今天愚人节。
在用code block(以下简称CB)写C,测试了一下前几天写过的判断一个数是否是质数。
结果还是不太熟练,一开始给了一个int k,让k=0,当i%j !=0的时候让k=1,然后k=1的话就return 1;说明这个数是质数。
int prime_number(int i)
{
int j,k;
{
k=0;
for(j=2;j<i;j++)
{
if(i%j!=0)
k=1;
}
if(k==1)
return 1;
else
return 0;
}
}
后来发现这个函数有问题
1、当i=1或者2的时候,无法进入for循环,直接得到k=0,也就是1和2不是质数,这和实际相违背。
2、当i=4时,得到的是k=1,也就是4是质数,这又与实际相违背,也就是说这个函数本身就是错的。也就是只要当有比i小的数字被i整除后余数不得0,就判定i为质数,这是错误的判断方法。
修改后的函数为:
int prime_number(int i)
{
int j,k;
{
k=1;
for(j=2;j<i;j++)
{
if(i%j==0)
k=0;
}
if(k==1)
return