今天有两道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
浙公网安备 33010602011771号