posts - 36,  comments - 0,  views - 4004

今天有两道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
posted on   20221417wzy  阅读(258)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示