今天有两道C语言题我错得很惨,然后我就凭借记忆,对这次测试写起总结。
第一道是统计1到n之间(包括n)的素数,并且求和
难点在于如何构造使sum=区间内每个素数相加的和
不能重复
如何运用循环控制结构与选择控制结构,此为精髓
以下提供一种思路
点击查看代码
for(x=2;x<=n;x++)
{
for(y=2;y<=x;y++)
{
if(x%y==0 && x!=y)
{
flag=1;
}//只要x%y=0,那么就不是素数,但y不能等于x
}
if(flag==0)//只有flag=0,即x除y求余不存在等于零的情况,才能算素数
{
sum+=x;
count++;
}
flag=0;
}
1.写出计算素数和的代码(初始)
点击查看代码
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int x,y,sum=0,flag=0;
for(x=2;x<=n;x++)
{
for(y=2;y<=x;y++)
{
if(x%y==0 && x!=y)
{
flag=1;
}
}
if(flag==0)
{
sum+=x;
}
flag=0;
}
printf("%d",sum);
return 0;
}
2.将求素数的和的过程写进函数
点击查看代码
//素数求和(今日错题本题)
#include<stdio.h>
int stats(int n);
int main()
{
int n,sum;
scanf("%d",&n);
sum=stats(n);
printf("%d",sum);
return 0;
}
int stats(int n)
{
int x,y,sum=0,flag=0;
for(x=2;x<=n;x++)
{
for(y=2;y<=x;y++)
{
if(x%y==0 && x!=y)
{
flag=1;
}
}
if(flag==0)
{
sum+=x;
}
flag=0;
}
return sum;
}
3.统计素数的个数并求素数的和(由1题变化可得)
点击查看代码
#include<stdio.h>
int stats(int n);
int main()
{
int n;
scanf("%d",&n);
int x,y,sum=0,flag=0,count=0;
for(x=2;x<=n;x++)
{
for(y=2;y<=x;y++)
{
if(x%y==0 && x!=y)
{
flag=1;
}
}
if(flag==0)
{
sum+=x;
count++;
}
flag=0;
}
printf("素数的个数:%d\n",count);
printf("sum=%d",sum);
return 0;
}
点击查看代码
10
素数的个数:4
sum=17
拓:第二种思路
将判别是否为素数写入函数中
返回‘是’或者‘否’(即1或0)
又或者是用break语句
点击查看代码
for(i=m;i<=n;i++)
{
for(j=2;j<=i;j++) //方便,不与1除而得到整除跳出循环
{
if(i%j==0) //有与2以上的数可以与之整除的数,就跳出循环
break;
}
if(j==i) //判断 整除后的数是否本身
{
num++;
sun += i;
————————————————
版权声明:本文为CSDN博主「小恩哦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45238409/article/details/105880927
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~