优化代码#include <stdio.h> int main () { int n,count=0,x=0,i=1; scanf("%d",&n); while(count<n) { i++; for(int j=1;j<=i;j++) { if(i%j==0) { x++; } } if(x==2) { count++; if(count==n) { printf("%d",i); break; } } x=0; } return 0; }
时间: 2023-12-06 12:04:33 浏览: 88
为了优化你的代码,我们可以采用以下方法:
1. 减少循环次数:在判断是否为质数时,只需要循环到 sqrt(i) 即可,因为一个数的因子最大不会超过它的平方根。
2. 减少重复计算:每次循环开始前,将 x 初始化为 0,而不是在每次循环中都将 x 清零。
下面是优化后的代码:
```c
#include <stdio.h>
#include <math.h>
int isPrime(int num) {
if (num < 2) {
return 0;
}
for (int i = 2; i <= sqrt(num); i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int n, count = 0, i = 1;
scanf("%d", &n);
while (count < n) {
i++;
if (isPrime(i)) {
count++;
if (count == n) {
printf("%d", i);
break;
}
}
}
return 0;
}
```
在优化后的代码中,我们引入了一个函数 `isPrime` 来判断一个数是否为质数。函数中的循环只需要遍历到 `sqrt(num)` 即可,这样可以减少循环次数。另外,我们将 `x` 的初始化放在循环外面,这样可以避免重复计算。
这样的优化可以提高代码的执行效率,并且使代码更加简洁易读。
阅读全文