1797 - 素数判断问题

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

给定一个非负整数,判断它是否为素数。

题目输入

第一行输入一个数N,表示有N组测试数据。

后面的N行输入多组数据,每组输入数据都是占一行。

题目输出

输出Yes或者No,占一行

输入/输出样例

输入格式

4
1
2
3
4

输出格式

No
Yes
Yes
No

C语言解答

#include <stdio.h>
int main(){
    int a, n, i, f;
    scanf("%d", &n);
    while(n--){
        scanf("%d", &a);
        f= a==1?0:1;
        for(i = 2; i*i <= a; i++){
            if(a%i==0 && a!=2){
                f=0;
                break;
            }
        }
        printf("%s\n", f?"Yes":"No");
    }
    return 0;
}

C++解答

#include<stdio.h>
#include<math.h>
int main()
{
	int i,j,count;
	scanf("%d",&count);
	while(count--)
	{
	scanf("%d",&i);
	if(i<0)break;
	for(j=2;j<=sqrt(i);j++)
		if(i%j==0)break;
    if(i==1||i==0)printf("No\n");
	else if(j>sqrt(i))  printf("Yes\n");
	else printf("No\n");
	}
	return 0;
}

Java解答

import java.util.Scanner;
public class Main
{
	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		int t=sc.nextInt();
		while(t-->0)
		{
			int num=sc.nextInt();
			int result=isPrime(num);
			if(result==1&&num!=0&&num!=1)
				System.out.println("Yes");
			else
				System.out.println("No");
		}
	}
	public static int isPrime(int num)//判断是否为素数
	{
		int temp = (int)Math.sqrt(num)+1;
		for(int i=2;i<temp;i++)
		{
			if(num%i==0)
				return 0;
		}
		return 1;
	}
}