目录:D:\Cpp\Examples\学习C++的每一天\第4天10.12\prime
素数概念:除了1 和它本身外,不能被其他自然数整除。
功能:判断是否为素数。
for(i = 2; i < n; i++) //其实这里不用真的循环到n,浪费资源。只用算到一半就可以。 效率依次提升
i < n/2+1 //比如说10/7肯定不能整除。
i < sqrt (n) +1
{
if (n % i == 0)
break;
++i;
}
//功能 ①判断101-200之间有多少个素数,并输出所有素数以及素数的个数。
int main()
{
int i,j;
int n = 0;
int flag = 1;
int x = 0;
printf("101-200之间的素数有:\n");
for (i = 101; i < 201; i++)
{ // j < i ; 或 j < i/2 +1 ; 或 j < sqrt(i) +1; 效率依次增加
// for (j = 2; j < i; j++) // 循环次数:14850
// for (j = 2; j < i / 2 + 1; j++) // 循环次数:7400
for (j = 2; j < sqrt(i)+1; j++) // 循环次数:1170
{
if (i % j == 0)
flag = 0;
++x;
}
if (flag) //输出结果错误,因为在102的时候,flag = 0 ,往后就一直没有变化。
{
printf("%d\n", i);
n++;
}
flag = 1; //根据单步调试,这里必须要再写一次flag = 1.
}
printf("有%d个素数\n",n);
printf("循环次数:%d", x);