2019-05-16

http://acm.hdu.edu.cn/showproblem.php?pid=2012


思路:用if语句确定输入的范围,然后先标出一个标记为sign=1,利用for语句进行表达式的计算,如果遇到不是素数的数,sign自增,如果全是素数,sign不会自增,最后判断sign是否为1,如果是就输出OK,不是就输出Sorry。

错误代码:

#include "stdio.h"

int main()

{

    int x,y,sign,m,i,j;

    while(scanf("%d%d",&x,&y)!=EOF)

    {

        if (x<-39||x>y||y>50) break;

        else

        {  if (x==0&&y==0)

                    break;

                for(i=x;i<=y;i++)

                    m=i*i+i+41;

                for(j=2;j<100;j++)

                    if (m%j==0) break;

                    else sign=1;

        }

        if (sign==1)

            printf("Ok\n");

        else

      printf("Sorry\n");

    }

    return 0;

}

问题:1.for语句的缩进有问题,for语句里的使用也有问题

2.sign的使用和最后的printf函数都出错了

改后的正确代码:

#include "stdio.h"

int main()

{

    int x,y,sign,m,i,j;

    while(scanf("%d %d",&x,&y)!=EOF)

    {

        if (x<-39||x>y||y>50) break;

        if (x==0&&y==0) break;

          sign=1;

        for(i=x;i<y;i++)

        { m=i*i+i+41;

            for(j=2;j<m;j++)

                if (m%j==0)

                {

                  sign++;

                  break;

                }

        }

        if (sign!=1)

            printf("Sorry\n");

        else

      printf("OK\n");

    }

    return 0;

}

总结:这一个题并没有让我学到什么特别新的东西,但是提醒了我一个大问题,我在做题目的时候大方向是对的,主体也没有什么错,但多次提交都不通过,经多次修改最后才通过,这让我知道我在细节上的处理真的很不够,也常犯小问题都看不出来,这个问题一定要好好改才行

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容