C语言求第n小的质数,求大佬帮看看代码问题,数字大时会出错



你的程序不只是大数有问题,小的也有问题,第一个质数是2,而你的结果为0大数出错,是因为你的int b[10000];不正确,第10000个素数为104729,早超过你的int b[10000];了实际上,你的b,m根本没有必要,以下是在你基础上改的(当然,程序有很大的提升空间)#include<stdio.h>int zhi(int x){ int k; int isPrime=1; for(k=2; k<x; k++) { if(x%k==0) { isPrime=0; break; } } return isPrime;}int main(){ int n,i,j; scanf("%d",&n); j=0; for(i=2; j<n; i++) //计算到n个就结束 if(zhi(i)==1) j++; printf("%d",i-1); //去掉最后一次循环 return 0;}

上一篇: 下一篇:


相关目录文章: