第15课
#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); //这里!!
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;
}
k = (int)sqrt((double)i); 为什么要加double,求解惑 之所以加 double ,是因为sqrt函数的参数是 double 类型,实际上,在这个程序中加不加都可以。
甚至这里要不要k都无所谓,直接在内层for循环的条件中写 j<=sqrt(i) 即可,也不必把开平方的结果转为 int 类型。
#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(i); //这里!!
for (j = 2; j <= sqrt(i); j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag)
count++;
flag = 1;
}
printf("10000以内共有%d个素数!\n", count);
return 0;
} @ba21版主,帮忙评个最佳,题主解决问题后就不见了。。版主帮个忙
页:
[1]