zoukankan      html  css  js  c++  java
  • hdu 2012 素数判定(c语言)

    hdu 2012 素数判定

    点击做题网站链接

    题目描述

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)

    Problem Description
    对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。

    Input
    输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。

    Output
    对于每个给定范围内的取值,如果表达式的值都为素数,则输出"OK",否则请输出“Sorry”,每组输出占一行。

    Sample Input
    0 1
    0 0

    Sample Output
    OK

    题目难点

    1. 对于字符串输出格式要求,见下面笔记1
    2. 用bool “开关”控制输入输出

    问题解答

    #include <stdio.h>
    #include <math.h>
    
    void isPrime(int,int);//函数声明
    
    int main()
    {
        int x,y;
        while(scanf("%d%d",&x,&y)!=EOF && (x!=0 || y!=0))//如果x=y=0则输入结束
        {
            isPrime(x,y);//调用函数判断是否是素数
        }
        return 0;
    }
    
    void isPrime(int x,int y)//函数定义
    {
        bool key;//定义一个 bool开关
        for(int n=x;n<=y;++n)
        {
            key=0;//每次循环都初始化为 0
            int i,t=n*n+n+41;
            for(i=2;i<=sqrt(t);++i)//经典的判断素数循环语句,不解释
            {
                if(t%i==0) break;
            }
            if(i>sqrt(t)) {key=1;continue;}//如果 t是素数,则 bool开关打开,变为 1,并且直接再次循环看下一个数是不是素数
            else {key=0;printf("%s
    ","Sorry");break;}//只要其中有一个不是素数,则把开关关上,key=0,并输出规定内容、跳出循环
        }
        if(key==1) printf("%s
    ","OK");//如果在给定范围内,所有的数都是素数,那么就输出规定语句
    }
    

    笔记:

    1. printf("%s ",“OK”) 和 printf("%s",“OK ”),其实输出的内容都一样,都是输出OK再换行(这里在OK后面的 ,不是字符串结束的标记)
      printf("%s",“OK”),是输出OK,不换行
      printf("%s ",“OK ”), 是输出OK后空一行(即换两次行)
  • 相关阅读:
    程序员之歌 littleflute原创
    生成网站缩略图的小工具,:)
    十个习惯
    用反编译工具透析.Net页面生成本质
    装箱拆箱陷阱揭秘
    图片上传——用一般处理程序实现
    Web.config文件中常用的配置节点
    初识三层,请多指教
    匪夷所思的题目,心理慢慢引导
    权重分配方法
  • 原文地址:https://www.cnblogs.com/yuzilan/p/10626199.html
Copyright © 2011-2022 走看看