用c语言输出100以内全部素数
时间: 2023-05-22 14:05:45 浏览: 73
以下是用 C 语言输出 100 以内全部素数的代码:
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int n) {
if (n < 2) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
for (int i = 2; i <= 100; i++) {
if (is_prime(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
这个程序会输出所有 100 以内的素数,结果为:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
相关问题
用c语言输出100以内全部素数,并对其进行优化
当输出100以内所有素数的时候,可以使用一般的质数判断方式,其中用到了for循环和if判断,具体代码如下:
```
#include<stdio.h>
#include<stdlib.h>
bool JudgePrime(int number)
{
int i;
for (i = 2; i < number; i++) {
if (number % i == 0)
break;
}
if (i >= number)
return true;
else
return false;
}
int main()
{
int i;
for (i = 2; i < 100; i++)
{
if (JudgePrime(i))
printf("%d\n", i);
}
return 0;
}
```
上述代码中,先定义了一个判断素数的函数JudgePrime,用于判断某一数是不是素数。
随后在主函数中,使用for循环从2开始到100结束,调用该函数进行判断,若为素数则输出。
对于优化,可以在判断素数的时候让i只遍历到number的平方根,这样可以加快判断速度。具体代码如下:
```
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
bool JudgePrime(int number)
{
int i;
for (i = 2; i <= sqrt(number); i++) {
if (number % i == 0)
break;
}
if (i > sqrt(number))
return true;
else
return false;
}
int main()
{
int i;
for (i = 2; i < 100; i++)
{
if (JudgePrime(i))
printf("%d\n", i);
}
return 0;
}
```
使用新加的math.h库中的sqrt函数,可以让i循环到number的平方根即可,这样减少了循环次数,使得判断速度更快。
用C语言输出100以内的素数并计数
以下是使用C语言输出100以内的素数并计数的代码:
```c
#include <stdio.h>
int main() {
int i, j, count = 0;
for (i = 2; i <= 100; i++) {
for (j = 2; j <= i; j++) {
if (i % j == 0 && i != j) {
break;
}
if (i == j) {
printf("%d ", i);
count++;
}
}
}
printf("\n共有%d个素数\n", count);
return 0;
}
```
代码中使用了两个嵌套的for循环,外层循环从2到100遍历每个数字,内层循环从2到当前数字遍历,如果当前数字能被其中的任意一个数字整除,则不是素数,跳出内层循环;如果内层循环遍历完毕,说明当前数字是素数,输出并计数。最后输出总素数个数。