c++判断素数,麻烦指点

题目描述

输入一个数,判断这个数,是否是素数,是输出YES,否输出NO
素数:一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;

输入

输入一个数,0<=a<=10000

输出

输出YES 或者NO

样例输入 Copy

6

样例输出 Copy

NO

更容易理解的写法,以及加了一点注释信息

#include <iostream>

using namespace std;

int main()
{
    int input;
    cin >> input;
    if (input <= 1) {
        cout<< "NO" <<endl;
        return 0;
    }

    int i = input - 1;
    while(i - 1) {
        if (input % i == 0) {
            cout<< "NO" <<endl;
            break;
        }
        i--;
    }
    if(i == 1) {
        cout<< "YES"<<endl;
    }
    
    return 0;
}

 

#include<iostream>
using namespace std;
int main()
{
	int a,flag=0;
	while(1)
	{
		cin>>a;
		if(a<=10000||a>=0)
		{
			break;
		}
	}
	//判断是不是素数
	//思想:判断2~n-1有没有n的约数
	for(int i=2;i<a-1;i++)
	{
		if(a%i==0)
		{
			flag=1;
			break;	
		}	
	}
	switch(flag)
	{
		case 1:
			cout<<"NO"<<endl;
			break;
		case 0:
			cout<<"YES"<<endl;
			break;
	} 
	return 0;
} 

拿去不用谢

#include <iostream>
#include <math.h>

using namespace std;

//判断是否为素数
int isPrimeNumber(int a){
    if(a<=1){
        return 0;
    }
    int s = (int)sqrt(a);
    for(int i=2;i<=s;i++){
        if(a%i==0){
            return 0;
        }
    }
    return 1;
}

int main()
{
    int n;
    cin>>n;
    if(n<0||n>10000){
        cout<< "请输入0到10000之间的数字" <<endl;
    }else{
        if(isPrimeNumber(n)){
            cout<< "YES" <<endl;
        }else{
            cout<< "NO" <<endl;
        }
    }
    
    
    return 0;
}

 

#include<iostream>
using namespace std;
int main(){
    bool flag=true;//定义一个bool类型的变量,用于判断 
    int num=0; 
    cout<<"输入一个整数:";
    cin>>num;  //接收键盘输入的整数 
    for(int i=2;i<num;i++){
        if(num%i==0){
            flag=false; //如果能找到整除的数,说明当前的数不是素数,直接结束循环 
            break;
        }
    }
    if(flag){ //根据bool值来判断是否是素数 
        printf("YES\n");
    }else{
        printf("NO\n");
    }
    return 0;
}