【发布时间】:2017-05-04 10:09:43
【问题描述】:
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
main()
{
clrscr();
int num,b,c,d,f,primeset[500],j=0;
cout<<"Enter Number (n): ";
cin>>num;
primeset[0]=2;
for(b=3;b<=1000;b++)
{
for(c=2;c<b;c++)
{
d=b%c;
if(d==0)
{
j=1;break;
}
else
{
j=0;
}
}
if(j==0)
{
for(f=1;f<500;f++)
{
primeset[f]=b;
}
}
else
{
//do nothing
}
}
cout<<"n th Prime is "<<primeset[num-1];
getch();
return 0;
}
这是我寻找第 n 个素数的程序,但它不起作用,请帮帮我。 请告诉我我的错误。 请告诉我,为什么我的程序不工作,它给 2 表示 num=1 和 997 表示 num 的所有其他值。告诉我错误和修复它们的代码。 PS:我用的是turbo c++
【问题讨论】:
-
你不需要在嵌套循环中上升到 b - 你需要迭代到 b 的平方根。当您在
h[f]=b中引用f时,f将始终等于 2。另外,请为您的标识符提供合理的名称。 a,b,c,d,e,f,g,h,j 不自我描述。除了查看声明之外,没有办法知道 h 是一个数组。 f 是做什么的? -
"f" 已用于描述数组 h 的第 f 个元素。我希望在 h[0] 中存储 2,在 h[1] 中存储 3,在 h[2] 中存储 5 等等......所以我设置了一个循环,其中 f,从 1、2、3 开始...... .. 请在我的程序中提出适当的修改建议,这与其他提供全新解决方案的人不同。
-
我提出了解决小规模素数的正确方法——埃拉托色尼筛法。您可以通过对输出进行后处理来调整它以适应您的工作方式!如果您需要这方面的帮助,我可以提出建议。 :-)
-
我已经更新了我的答案,从筛子转向动态规划。请看看这个!
-
先生,感谢您的帮助,但是对于编程新手,我不知道 bool 和 index 等,请告诉我,为什么我的程序不工作,它给 2 表示 num=1 和997 对于所有其他 num 值