计蒜客--计算质数

 

   对于大于1的数,如果除了1和它本身,它不能再被其它正整数整除,那么我们说它是一个质数。晓萌想判断一个数是不是质数,希望找你写个程序,帮助她进行判断。+输入包括一行,为一个整数N(1+<+N+≤1000),正是晓萌给出你让你判断的数字。+输出包括一行,如果晓萌给出的整数N为质数,那么输出YES;如果N不是质数,那么输出NO。+样例1+输入:+3+输出:+YES&oq=对于大于1的数,如果除了1和它本身,它不能再被其它正整数整除,那么我们说它是一个质数。晓萌想判断一个数是不是质数,希望找你写个程序,帮助她进行判断。++输入包括一行,为一个整数N(1+<+N+≤1000),正是晓萌给出你让你判断的数字。++输出包括一行,如果晓萌给出的整数N为质数,那么输出YES;如果N不是质数,那么输出NO。

样例1

输入:

3

输出:

YES

我的解法

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int N,K;
    bool flag;
    while ( cin>>N  && (N!=1) && (N<1000) )
    {
        flag = false;
      K =sqrt(N);
      for (int i = 2; i <= K; ++i)//这一步我的计算量比作者的大
      {
            if (N%i ==0 )
            {
                cout<<"NO"<<endl;
                flag = true;
                break;/* code */
            }
      }
      if (flag == false/* condition */)
      {
      cout<<"YES"<<endl;

      }
      //cout<<K<<endl;
    }
    return 0;
}

作者本人的解法

#include "stdio.h"  
#include "math.h"  
int main(){  
    int Num, i;  
    scanf("%d", &Num);  
    if (Num == 2){
        printf("YES");
        return 0;
    }
    if (Num % 2 == 0){  //先判断是否为偶数,若偶数就直接输出NO并结束程序  
        printf("NO");  
        return 0;   //在主程序main()中使用return 0可以直接结束程序  
    }  
    //从3开始,到Num的算术平方根结束,步进为2 
    for (i = 3; i <= sqrt(Num); i += 2)   
        if (Num % i == 0){  
            printf("NO");  
            return 0;  
        }  
    printf("YES");  
    return 0;  
}  

 

你可能感兴趣的:(计蒜客--计算质数)