#include <stdio.h>
main()
{
int n;
int x;
int h=24;
int s=9;
scanf("%d",&n);
while (n>0)
{
n=n-1;
scanf("%d",&x);
while (x<=9)
{
if (x==1)
printf("2\n");
if (x==2)
printf ("3\n");
if (x==3)
printf ("5\n");
if (x==4)
printf("7\n");
if (x==5)
printf("11\n");
if (x==6)
printf("13\n");
if (x==7)
printf("17\n");
if (x==8)
printf("19\n");
if (x==9)
printf("23\n");
break;
}
while (23<h<542 && x>9)
{
h=h+1;
if ( (h%2)!=0 && (h%3)!=0 && (h%5)!=0 && (h%7)!=0 && (h%11)!=0 && (h%13)!=0 && (h%17)!=0 && (h%19)!=0 && (h%23)!=0 )
{
s=s+1;
if (x==s)
printf("%d\n",h);
}
}
}
}
代码的问题是输入n,它将是以下输入的数量。每个输入必须给出第x个素数。 例如:
输入: 3 ,4 ,20 50 输出: 7 ,71 ,229
x可以在1到100之间。(前100个素数) 现在我的问题是x&gt; 9.输入一个值后,它将不再接受x的值。
我想知道为什么会发生这种情况以及如何解决它。
我也是编程方面的新手,还没有学过数组。(我知道scanfs并不是最好的东西,但到目前为止我都学到了这一点)
答案 0 :(得分:0)
这一行:
while (23<h<542 && x > 9)
在x
大于9
时创建无限循环。 23 < h < 542
不会测试h
是否在23
和542
之间。该表达式相当于(23 < h) < 542
。如果(23 < h)
小于1
,则23
为h
,因为h
以24
开头且循环增加1
,因此总是如此。 542
始终小于if (x > 9) {
while (h < 542)
...
}
}
。
你想要的是:
x
每次循环都不需要测试23 < h
,因为它永远不会在循环中发生变化。而且没有必要测试23 < h && h < 542
,因为这总是正确的。
如果确实需要检查变量是否在两个数字之间,那么使用h
的方法就是这样。
另一个问题是,当您输入多个高于9的数字时,您不会在寻找更高质数的s
循环之前将while
和x
重置回其初始值。您应该在循环之前初始化这些值,而不仅仅是在程序的顶部。
你也可以使用cascaded if / else if / else,这样你就不需要在最后测试switch/case
(或者你可以使用#include <stdio.h>
main() {
int n;
int x;
scanf("%d",&n);
while (n>0) {
n=n-1;
scanf("%d",&x);
if (x==1) {
printf("2\n");
} else if (x==2) {
printf ("3\n");
} else if (x==3) {
printf ("5\n");
} else if (x==4) {
printf("7\n");
} else if (x==5) {
printf("11\n");
} else if (x==6) {
printf("13\n");
} else if (x==7) {
printf("17\n");
} else if (x==8) {
printf("19\n");
} else if (x==9) {
printf("23\n");
} else {
int h = 24;
int s = 9;
while (h<542) {
h=h+1;
if ( (h%2)!=0 && (h%3)!=0 && (h%5)!=0 && (h%7)!=0 && (h%11)!=0 && (h%13)!=0 && (h%17)!=0 && (h%19)!=0 && (h%23)!=0 ) {
s=s+1;
if (x==s) {
printf("%d\n",h);
}
}
}
}
}
}
)。
这是完整的重写程序:
//Add authentication headers as params
var params = {
access_token: 'An access_token',
other_header: 'other_header'
};
//Add authentication headers in URL
var url = [url_generating_pdf, $.param(params)].join('?');
//Open window
window.open(url);