【发布时间】:2023-01-17 00:44:13
【问题描述】:
[#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
int checkPrime(int n)
{
int c=0;
for(int i=2;i<=sqrt(n);i++)
if(n%i==0)
c++;
if(c)`
return 0;
return 1;`
}
int main(){
int t;
scanf("%d",&t);
for(int a0 = 0; a0 < t; a0++)
{
int n,j;
scanf("%d",&n);//Code isnt working beyond this statement
for(int i=1;i<=n;)
{
for(j=2;;j++)
{
if(checkPrime(j))
i++;
}`
}
printf("%d\n",j);
}
return 0;
}
我正在尝试打印第 N 个素数,但由于某种原因,此代码无法超出 scanf 语句的工作范围我尝试在扫描 n 的值后放置 printf 语句,但由于某种原因无法正常工作`
【问题讨论】:
-
退出循环
for(j=2;;j++)的条件是什么? -
得到错误!谢谢你的帮助
-
为什么你觉得有必要重新计算平方根每次通过循环?使用一些常识。如果这是一项作业,您几乎肯定会因此而失分。
-
那么,当我检查每个 n 是否为素数时,如何避免每次都使用 sqrt