首页 > 试题广场 >

素数判定

[编程题]素数判定
  • 热度指数:19625 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。

输入描述:
测试数据有多组,每组输入一个数n。


输出描述:
对于每组输入,若是素数则输出yes,否则输入no。
示例1

输入

13

输出

yes
//大家好,我是yishuihan;
#include<iostream>
#include<cmath>
using namespace std;

bool isPrime(int number)
{
    if(number<=1) return false;
    if(number==2) return true;
    if(number==3) return true;
    for(int i=2;i<=sqrt(number);i++)
    {
        if(number%i==0)
            return false;
    }
    return true;
}

int main()
{
    int number;
    while(cin>>number)
    {
        if(isPrime(number))
            cout<<"yes"<<endl;
        else
            cout<<"no"<<endl;
    }
    return 0;
}

发表于 2016-08-12 15:15:11 回复(0)
更多回答
#include<stdio.h>
int main (){//the shorter,the better.
    int n,i;
    for(;~scanf("%d",&n);){
       for (i = 2;i*i<=n&&n%i;i++);
       printf((n<2||i*i<=n)?"no\n":"yes\n");
    }
} 

发表于 2018-01-14 16:02:14 回复(1)
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        int n = new Scanner(System.in).nextInt();
        System.out.print(judge(n));
    }
    public static String judge(int n){
        if(0 == n || 1==n || 0 >n){
            return "no";
        }
        for(int i=2;i<=n/2;i++){
            if(0 == n%i){
                return "no";
            }
        }
        return "yes";
    }
}

发表于 2018-08-03 02:02:51 回复(0)

while True:
    try:
        a=int(input())
        if a<2:
            print("no")
        else:
            isSu=True
            for i in range(2,a):
                if a%i==0:
                    print("no")
                    isSu=False
                    break
            if isSu:
                print("yes")
    except:
        break

python solution

发表于 2017-10-01 10:28:35 回复(3)
#define _CRT_SECURE_NO_WARNINGS
#include <cmath>
#include <iostream>
using namespace std;

bool judge(int n)
{
    if (n == 0 || n == 1 || n < 0)
    {
        return false;
    }
    int pos = sqrt(n);
    for (int i = 2; i <= pos; i++)
    {
        if (n % i == 0)
        {
            return false;
        }
    }
    return true;
}

int main()
{
    int n;
    while (cin >> n)
    {
        if (judge(n))
        {
            cout << "yes" << endl;
        }
        else
        {
            cout << "no" << endl;
        }
    }
    return EXIT_SUCCESS;
}

发表于 2021-02-19 10:58:23 回复(1)
//判断素数
#include<stdio.h>
int main()
{
    int n,i,key=1;
    scanf("%d",&n);
    for(i=2;i*i<=n;i++)//优化循环次数
        if(n%i==0)//能整除
        {
            key=0;break;
        }
    if(key&&n!=1)//解决1的问题
        printf("yes");
    else
        printf("no");
}

发表于 2020-04-08 11:44:58 回复(1)
#include <bits/stdc++.h>
using namespace std;
bool Judge(int x){
    bool flag = true;
    if(x<2) flag = false;
    else{
        for(int i=2;i*i<=x;i++){
            if(x%i==0) flag = false;
        }
    }
    return flag;
}
int main(){
    int n;
    while(cin>>n){
        if(Judge(n)) cout<<"yes"<<endl;
        else cout<<"no"<<endl;
    }
}

发表于 2020-03-03 17:51:39 回复(0)
//注意1不是素数
#include<iostream>
using namespace std;
int main(){
    int n;
    while(cin>>n){
        bool judge=1;
        for(int i=2;i<n;i++)
            if(n%i==0){
                judge=0;
                break;
            }
        if(n==1)
            cout<<"no"<<endl;
        else if(judge||n==2)
            cout<<"yes"<<endl;
        else
            cout<<"no"<<endl;
    }
}

发表于 2020-01-13 11:54:30 回复(0)
while True:
    try:
        num=int(input())
        if num > 1:
            x=2
            while x<=num//x:
                if (num % x) == 0:
                    print('no')
                    break
                else:
                    x+=1
            else:
                print('yes')
        else:
            print('no')
    except:
        break

发表于 2019-08-26 11:57:05 回复(0)
#include<stdio.h>
#include<math.h>
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        if(n<=1){
            printf("no\n");
        }
        else{
            int m=(int)sqrt(n)+1;
            int flag=0;
            for(int i=2;i<m;i++){
                if(n%i==0){
                    flag=1;
                    break;
                }
            }
            if(flag==0){
                printf("yes\n");
            }
            else printf("no\n");
        }
    }
    return 0;
}

发表于 2019-01-25 12:06:13 回复(0)
#include <stdio.h>
#include <math.h>
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF){
    if(n<=1)
        printf("no\n");
    else{
    int a=(int)sqrt(n);
        int flag=1;
        for(int i=2;i<=a;i++){
            if(n%i==0) flag=0;
        }
        if(flag==0) printf("no\n");
        else
        {
            printf("yes\n");
        }
        }
    }
    return 0;
}
发表于 2018-02-28 23:56:20 回复(0)
#include<stdio.h>
#include<math.h>
bool judge(int n) {
    if (n <= 1) return 0;
    else {
        int a =  sqrt(n);   //不用取整加1,在下面用 i <= a 一样的效果;
        for (int i = 2; i <= a; i++) {
            if (n%i == 0) return 0;
        }
        return 1;
    }
}
int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        puts(judge(n) ? "yse" : "no");
    }
    return 0;
}

发表于 2018-03-05 01:28:16 回复(0)
#include<bits/stdc++.h>
using namespace std;

bool is(int n){
    int bound=sqrt(n);
    for(int i=2;i<=bound;i++){
        if(n%i==0){
            return false;
        }
    }
    return true;
}

int main(){
    int n;
    while(cin>>n){
        if(n==1){
            cout<<"no"<<endl;
        }
        else if(is(n)){
            cout<<"yes"<<endl;
        }
        else{
            cout<<"no"<<endl;
        }
    }
    return 0;
}
发表于 2022-10-06 17:18:04 回复(0)
#include<iostream>
#include<cmath>
using namespace std;

bool isprime(int x){
    if(x<2) return false;
    int bound=sqrt(x);
    for(int i=2;i<=bound;i++){
        if(x%i==0) return false;
    }
    return true;
}
int main() {
    int n;
    while(cin>>n){
        cout<<(isprime(n)==true?"yes":"no")<<endl;
    }
}

发表于 2024-03-25 09:59:03 回复(0)
#include<stdio.h>
int main(){
    int N;
    while(scanf("%d",&N)!=EOF){
        for(int i=2;i*i<=N;i++){
            if(N%i==0){
                printf("no\n");
                return 0;
            }
        }
        if(N==0||N==1) printf("no");
        else
        printf("yes\n");
    }
}


编辑于 2024-03-16 20:11:31 回复(0)
#include <iostream>
using namespace std;
int main(){
    int n;
    while(cin >> n){
        bool flag = true;
        if(n<2) flag = false;
        for(int i=2; i*i<=n; i++){
            if(n%i == 0) flag = false;
        }
        if(flag) cout << "yes" << endl;
        else cout << "no" << endl;
    }
}

编辑于 2024-03-14 01:45:49 回复(0)
#include <iostream>
#include <cmath>
using namespace std;

bool isPrime(int n) {   //判断是否为质数
    if (n < 2) {        //小于2必定不是质数
        return false;
    }
    int bound = sqrt(n);    //判断上界(保证sqrt运算只进行一次)
    for (int i = 2; i <= bound; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

int main() {
    int n;
    while (cin >> n) {
        cout << (isPrime(n) ? "yes" : "no") << endl;
    }
    return 0;
}

编辑于 2024-02-07 14:26:07 回复(0)
#include <iostream>
#include <cmath>
using namespace std;

bool func(int n){//判断一个数是不是素数
    bool tag=true;
    for(int i=2;i<=sqrt(n);i++){
        if(n%i==0){
            tag=false;
            break;
        }
    }
    return tag;
}
int main() {
    int n;
    while(cin>>n){
        if(n>1){//如果这个数大于1进行继续判断,否则不是素数
            if(func(n)){
                cout<<"yes"<<endl;
            }
            else{
                cout<<"no"<<endl;
            }
        }
        else{
            cout<<"no"<<endl;
        }

    }
}

发表于 2023-03-22 15:13:05 回复(0)
#include <stdio.h>
#include <math.h>
int Fun(int x){
    if (x<2) {
        return 0;
    }
    int n = (int)sqrt(x);
    for (int i = 2; i<=n; i ++) {
        if (x%i==0) {
            return 0;
        }
    }
    return 1;
}

int main(){
    int x;
    scanf("%d", &x);
    printf("%s\n", Fun(x)?"yes":"no");
    return 0;
}

发表于 2023-02-13 22:08:02 回复(0)
x = int(input())
def find(x):
    if x==1:return "no"
    for i in range(2,x):
        if x%i==0:
            return "no"
    return "yes"
print(find(x))

发表于 2022-11-20 18:35:23 回复(0)

问题信息

难度:
88条回答 9031浏览

热门推荐

通过挑战的用户

查看代码