C程序不能显示3000个数字
这个程序应该显示1-3000范围内的素数,但它只显示743-3000范围内的素数。如何让它打印范围内的所有素数 节目如下:C程序不能显示3000个数字,c,long-integer,primes,C,Long Integer,Primes,这个程序应该显示1-3000范围内的素数,但它只显示743-3000范围内的素数。如何让它打印范围内的所有素数 节目如下: #include <stdio.h> #include <math.h> #include <stdbool.h> main() { unsigned long long num, divisible_num; printf("The prime numbers in the range of 1 - 300
#include <stdio.h>
#include <math.h>
#include <stdbool.h>
main()
{
unsigned long long num, divisible_num;
printf("The prime numbers in the range of 1 - 3000 are: \n");
for(num=1;num<=3000;num++)
{
for(divisible_num=2;divisible_num<=sqrt(num);divisible_num++)
{
if(num%divisible_num==0)
break;
}
if(num%divisible_num!=0)
{
printf("%lu\n", num);
}
}
getchar();
}
#包括
#包括
#包括
main()
{
无符号长数值,可除数值;
printf(“1-3000范围内的素数是:\n”);
for(num=1;num首先要做的事情是将sqrt
调用从for循环中取出。您可以计算一次。更好的是,将其与
for(divisible_num=2;divisible_num * divisible_num<=num;divisible_num++)
for(divisible_num=2;divisible_num*divisible_num当我运行您的代码时,它的范围是1-3000。
我不确定你有什么问题。
get char()似乎有点不合适
此外,一旦选中2,就不必再除以任何偶数。
此代码在3-3000之间工作
for(num=3;num<=3000;num++)
{
int prime = (num%2 != 0);
long root = sqrt(num);
for(divisible_num=3;prime && divisible_num <= root;divisible_num+=2)
{
if(num%divisible_num==0){
prime = 0;
}
}
if(prime)
{
printf("%lu\n", num);
}
}
用于(num=3;num请记住一件事作为旁注:-始终在;
,,
和a=b
之后留出空间。a=b
应该是a=b
您是否尝试过在您的终端中向上滚动?我运行了此代码,得到的值肯定小于743——一直到1。此外,由于您的方式,此代码错误地将2标记为非素数设置循环。在for()
循环之后、外部if()之前插入--divisible_num
@Michael正如我评论的那样,只需添加insert--divisible_num
检查它在这里的工作情况,是的,请考虑下面两个好的建议。prog>out.txt
或按24行等待inkeys。另外2是prime正确的建议,从我这里为循环添加只检查奇数+1很好,但我更喜欢prime&&divisible_num啊!你说得对,我真傻。你的评论即使没有解释也很有道理。谢谢!添加getchar()
是那些在Windows中双击图标运行编译程序的人的常见伎俩。程序完成工作后,窗口将消失。好的,谢谢!我以前没有使用Windows在C中编程,你知道的越多。
for(num=3;num<=3000;num++)
{
int prime = (num%2 != 0);
long root = sqrt(num);
for(divisible_num=3;prime && divisible_num <= root;divisible_num+=2)
{
if(num%divisible_num==0){
prime = 0;
}
}
if(prime)
{
printf("%lu\n", num);
}
}