#include<stdio.h>
int main() {
int i, j, BOOL = 1, count = 0;
printf("3~1000的素数有:\n");
for (i = 3; i <= 1000; i++)
{
for (j = 2; j < i; j++) {
if (!(i % j))
{
BOOL = 0;
break;
}
else
BOOL = 1;
}
if (BOOL)
{
count++;
printf("%-5d", i);
if (count % 5 == 0)
printf("\n");
}
}
}
您好,这样编程就可以了
#include <stdio.h>
int sushu(int n)
{
int i;
for(i = 2; i < n; i++)
{
if(n % i == 0)
return 0;
}
return 1;
}
int main ()
{
int n, m, j = 0;
for(n = 3; n <= 1000; n++)
{
m = sushu(n);
if(m == 1)
{
printf("%d ", n);
j++;
if(j % 5 == 0)
printf("\n");
}
}
return 0;
}
追问是对的,但是您定义了一个新函数int sushu(int n),我想要不定义新函数的,谢谢
追答我重新写过一次了,记得采纳哦
#include
#include
int main()
{
int i,m,count=0;
for(m=3;msqrt(m))
{
printf("%d ",m);
count++;
if(count%5==0)
printf("\n");
}
}
}
您好,程序是对的,但是,,,,,额,,,有几个地方我看不懂,,,能解释一下吗,万分感谢
for(m=3;msqrt(m)),为什么满足此条件就是素数?
因为偶数一定不是素数,可以被2整除,这样直接加2可以节省效率。
i<m也是可以的,但是i<sqrt(m)也可以,这样的效率更高,这是数学家证明过的。
break跳出里面那个for循环
因为假如不是素数的话,那么里面那个for的i一定会全部执行完,此时跳出循环的i肯定是等于sqrt(m)+1了,所以可以用i>sqrt(m)来判断