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

作者&投稿:茌尤 (若有异议请与网页底部的电邮联系)
题目:求100-200之间有多少个素数,并输出所有素数。用C语言编程~

#include
int main()
{
int i;
int j;
int num =0;
for(i =100;i<=200;i++)
{
for(j = 2;j<i;j++)
{
if(i%j == 0)
{
break;
}
}
if(j >=i)
{
printf(" %d",i);
num++;
}
}
printf("
num=%d",num);
getchar();
return 0;
}

有三种方法:
1、输出1-100以内的素数:

2、同样,也是输出1-100以内的素数,这个构造一个数组,将其所有元素初始化为1,表示素数,这时取x从2开始,到100以内做循环。
若x为素数,即prime[x]!=0,使得每个i*x位置元素置0(prime[i*x]=0),表示为非素数,循环结束前x+1。

3、该方法是输出100个素数,基本思想是构造一个素数表,利用函数判断每个数是否能被其之前的素数整除,如果不能,则在素数表内加上该元素,不断循环(while循环结束条件是cnt即数组个数>100)。

扩展资料:
在这个小程序中主要用到的是for循环
for 循环语句的一般形式为:
for (表达式1; 表达式2; 表达式3)
{
语句;
}
需要注意的两点:
1) 表达式1、表达式2和表达式3之间是用分号;隔开的,千万不要写成逗号。
2) for(表达式1;表达式2;表达式3)的后面千万不要加分号,很多新手都会犯这种错误——会情不自禁地在后面加分号。
因为 for 循环只能控制到其后的一条语句,而在C语言中分号也是一个语句——空语句。所以如果在后面加个分号,那么 for 循环就只能控制到这个分号,下面大括号里面的语句就不属于 for 循环了。

可以使用筛法来判断 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。



#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);
}
}

#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();
}

#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可用*/
}

下面是使用 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。


c语言中,1是什么意思
在c语言中1是判断语句,1代表的意思是真,0代表的是假。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但...

C语言中if(!1)是什么意思
c语言里, 数字0被认为是假, 非0被认为是真 !1 就是将1按照布尔值取反, 1是非0 (就是不等于0), 所以1本身是真, 真再取反就是假 所以 if(!1) 这里是一个永假式, 也就是永远不成立, 这个if语句永远不会被执行

c语言中!1是什么意思?
判断语句,1代表的意思是真,0代表的是假。C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出。1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计...

C语言中return -1 和 0,1 的区别?
return用于返回一个整型数值是执行结果的一种标志.返回1,0,-1都是一种标志没有什么特殊区别!只不过一般用1表示正确退出函数调用,0,-1表示错误退出。没有什么实质性区别的!

在C语言中这种类型的数据如何表示。如何表示i变量的值范围在[-1,1...
您好,很高兴回答您的问题。根据您的说明,结合c语言的相关语法规则,表示变量在-1到1之间的形式为:float i;i>=-1&&i<=1;

C语言:计算1-1\/2+1\/3-1\/4...前N项和,问号处求解!!!
h> int main(){ int i,n,flag;float sum;scanf("%d",&n);sum=0;flag=1;\/\/初始化 for(i=1;i<=n;i++)\/\/循环判断 { sum+=(float)flag\/i;flag=flag*(-1);\/\/改变符号 } printf("%0.3f\\n",sum);\/\/getch();\/\/这个没有用吧?return 0;\/\/函数要有返回值 } ...

在C语言中,'1'表示什么?
在C语言中,'1'表示字符1(字符型常量); 1表示数字1(数字型常量)。两者的关系为:1='1' - '0'; \/\/ 即将字符1转换为数字1 两者的区别于联系可以通过下面的程序段来说明:char ch1='1'; \/\/ 将字符'1'赋值给字符变量ch1char ch2=1; \/\/ 将ASCII码值为1的字符赋值给字符变量ch...

如何用c语言判断一个数是不是素数
首先要知道素数是不等于1,它的因子只有1和它本身。判断一个数是否为素数,可以用大于1小于给定数的所有数去除给定数,如果有任何一个能够除尽,就表示是合数,反之是素数。下面是具体如何用C语言判断素数的过程:1、打开visual C++ 6.0,点击【文件】-【新建】-【文件】,然后选择【C++ Source File...

c语言中0与1以及0与非零有区别么
没有区别。C语言判断真假时,以0为假,非0为真,即1也是表示真。通常使用逻辑变量的做法:定义一个int类型变量,当变量值为0时表示false,值为1时表示true。int flag;flag = 0;...flag = 1;if( flag ){...}

用C语言,判断1-100之间有多少个素数,并输出所有素数。
可以使用筛法来判断 1-100 之间有多少个素数,并输出所有素数。筛法是一种通过枚举合数的因子来筛选出素数的方法。下面是用 C 语言实现的代码示例:include <stdio.h>#include <stdbool.h> define N 100 int main(void){ \/\/ 创建一个 bool 类型的数组,用来存储每个数是否为素数bool prime[N + ...

云溪区13519928085: 怎样用C语言产生随机数,1 - 100之间的 -
比垄西咪: #include #include int main(){ srand((unsigned int)time(0)); int a[20]; for(int i = 0; i < 20; i++) { a[i] = ...

云溪区13519928085: 用C语言,判断1 - 100之间有多少个素数,并输出所有素数. -
比垄西咪: #include<stdio.h> #include<math.h> main() {int m,k,i,n=0;for(m=1;m<100;m+=2){k=(int)sqrt((double)m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>k){printf("%5d",m);n++;}if(n%10==0)printf("\n");}printf("\n"); }

云溪区13519928085: 计算1到100之间内所有数字的和.用循环模式来算,这是属于c语言的类型 -
比垄西咪: #include void main() { int sum=0; for(int i=1; i sum+=i; printf("1到100之间内所有数字的和=%d",sum); }

云溪区13519928085: 用C语言求1到100之间的素数,谁能帮忙解释这个运算的流程??谢谢了. -
比垄西咪: i为被测试是否是素数,j为被除数,k是标志位 规则是:i从1数到100,每个数都要经过测试,i除以2,看是否能整除,除以3,看是否能整除,一直除以到i-1,看是否能整除(这其中的过程,1和i本身不需要测试,其余的数字只要有一个能被整除,就满足if ((i % j) == 0)的条件,把k标志位置为1.外面判断k如果为1,说明有数被整除,不是素数,不打印,要是k等于0,就是素数,能打印).懂了么?希望采纳

云溪区13519928085: 求C语言编程:输出1 - 100之间所有的合数 -
比垄西咪: 定义:一个数被1和他本身整除外,还有1个或以上因数的自然数为合数.程序改正如下: #include<stdio.h> void main() {int num,i;for(num=2;num<100;num++){for(i=2;i<num;i++)//注意是i<num,不包括本身num{if(num%i==0){printf("%d\n",num);break;//只要满足一个条件就break}}} } 程序已通过编译测试. 回答完毕,如果觉得回答得好,请采纳为最佳答案.

云溪区13519928085: C语言中如何写出求1 - 100中有多少个奇数的程序?谢谢 -
比垄西咪: #include<stdio.h> void main() {int i,m; int sum=0; for(i=1;i<=100;i++) { if(i%2!=0) { sum=sum+1; } } printf("1-100之间的奇数共有:%d\n",sum); }

云溪区13519928085: c语言分别统计1 - 100之间,满足3的倍数和7的倍数的数各有多少个 -
比垄西咪: 33 和 14个#include <stdio.h>int main() {int sum1=0,sum2=0,i;for(i=1;i<=100;i++){if(!(i%3)) sum1++;if(!(i%7)) sum2++;}printf("3的倍数 :%d \n",sum1);printf("7的倍数 :%d \n",sum2); }

云溪区13519928085: 关于C语言求1 - 100里面有多少个数是3的倍数和多少个数各位是3的 -
比垄西咪: int b=0;//3倍数个数int w=0;//尾数是3的个数for(i=1;i<=100;i++){ if(i%3==0) b++; if(i-(i/10)*10==3) w++;}

云溪区13519928085: C语言1 - 100之间的素数?要求C语言编程不要其他答案~! -
比垄西咪: 判断101-200之间有多少个素数,并输出所有素数.1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数. 2.程序源代码:#include "math.h" main() { int m,i,k,h=0,leap=1; ...

云溪区13519928085: c语言 求1 - 100之间的奇数和 偶数和 总和 -
比垄西咪: 参考代码如下: #include<stdio.h>int main() {int i,s1=0,s2=0,s=0;for(i=1;i<=100;++i){if(i%2==0)s2+=i;elses1+=i;s+=i;}printf("奇数和%d,偶数和%d,总和%d",s1,s2,s);return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网