S1E15
题目需求:1、求 m 是否为素数,m 不必被 2 ~ m/2 之间的每一个整数去除,只需被 2 ~之间的每一个整数去除就可以了。如果 m 不能被 2 ~间任一整数整除,那么 m 必定是素数。
#include <stdio.h>
#include <math.h>
int main()
{
int count = 4; // 已知2,3,5,7是素数
int i, j, k;
_Bool flag = 1;
for (i = 9; i < 10000; i++)
{
k = (int)sqrt((double)i); //这个double放在这有什么用,题目要求被2-根号m的整数去除,代码里面哪里写了把开完根号的数变成整数?
for (j = 2; j <= k; j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag)
{
count++;
}
else
{
flag = 1;
}
}
printf("10000以内共有%d个素数!\n", count);
return 0;
} 1,在前面那个(int)那里,叫做强制类型转换
2,因为开方后的结果可能是浮点,所以给它改成整数 里面的double是必须强制转换的,不然会发生错误。sqrt函数里面必须是double.
页:
[1]