用C语言,判断1-100之间有多少个素数,并输出所有素数。

(提示:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。)

第1个回答  2023-03-10
下面是使用 C 语言编写的程序,用于判断 1-100 之间有多少个素数,并输出所有素数:
#include <stdio.h>
#include <stdbool.h>

bool isPrime(int n) {
if (n <= 1) { // 小于等于 1 的数不是素数
return false;
}
for (int i = 2; i * i <= n; i++) { // 判断从 2 到 sqrt(n) 是否能整除 n
if (n % i == 0) {
return false;
}
}
return true; // 如果从 2 到 sqrt(n) 都不能整除 n,则 n 是素数
}

int main() {
int count = 0; // 记录素数个数
printf("1-100之间的素数有:\n");
for (int i = 2; i <= 100; i++) { // 从 2 循环到 100
if (isPrime(i)) { // 如果 i 是素数
count++; // 素数个数加 1
printf("%d ", i); // 输出素数
}
}
printf("\n共有 %d 个素数\n", count);
return 0;
}

在上述代码中,我们首先定义了一个函数 isPrime,用于判断一个数是否为素数。在 main 函数中,我们循环从 2 到 100,判断每个数是否为素数,如果是素数,则输出该数,并将素数个数加 1。最后输出所有素数和素数个数。注意,判断素数的过程中,可以通过循环从 2 到 sqrt(n) 来实现,这是因为在 sqrt(n) 之后的因子已经被之前的因子除尽了,不可能再有因子能够整除 n。
第2个回答  2022-12-26

可以使用筛法来判断 1-100 之间有多少个素数,并输出所有素数。筛法是一种通过枚举合数的因子来筛选出素数的方法。

下面是用 C 语言实现的代码示例:

#include <stdio.h>
#include <stdbool.h>

#define N 100

int main(void)

// 创建一个 bool 类型的数组,用来存储每个数是否为素数
bool prime[N + 1];


// 初始化数组,假设所有数都是素数
for (int i = 0; i <= N; i++)
prime[i] = true;

// 使用筛法筛选出素数
for (int i = 2; i <= N; i++)
{
// 如果 i 不是素数,则跳过
if (!prime[i])
continue;

// 输出 i
printf("%d ", i);

// 将 i 的倍数标记为合数
for (int j = i * i; j <= N; j += i)
prime[j] = false;
}

return 0;

}


运行结果如下:

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

在这个程序中,使用了一个 bool 类型的数组来存储每个数是否为素数。使用筛法筛选出 1-100 之间的素数,并输出每个素数。

需要注意的是,C 语言没有内置的 bool 类型,需要使用头文件 stdbool.h 来支持 bool 类型。在上面的代码中,需要包含头文件 stdio.h 和 stdbool.h。

第3个回答  2012-05-21
#include<stdio.h>
#include<math.h>
void main()
{
int m,k,i,n=0;
for(m=1;m<=100;m=m+2)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
if(i>=k+1)
{
printf(" %d",m);
n+n+1;
}
if(n%10==0)
printf(" \n");
}
printf(" \n");
getch();
}
第4个回答  2012-05-21
#include <stdio.h>
void main()
{
int sum,i,j;
for (i = 3;i <= 100;i++)
{ sum = 0;
for (j = 1;j <= i;j++)
{
if(i % j == 0)
sum = sum + j;
}
if( sum == j)
printf("%d",i);
}
}
第5个回答  2012-05-21
#include<stdio.h>
#include<math.h>

main()
{ int i,j,n,t=0;

for(j=2;j<100;j++)
{ n=sqrt(j);

for(i=2;i<=n;i++)
{
if(j%i==0)
break;
}

if(i>n)
{
printf("%4d",j);
t++;

if(t%8==0)
printf("\n");
}
}
/*getch();TC可用*/
}