对于大于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; }