每日OJ题_牛客_爱吃素_数学_C++_Java

目录

牛客_爱吃素_数学

题目解析

C++代码

Java代码


牛客_爱吃素_数学

爱吃素 (nowcoder.com)

描述:

牛妹是一个爱吃素的小女孩,所以很多素数都害怕被她吃掉。

        一天,两个数字aaa和bbb为了防止被吃掉,决定和彼此相乘在一起,这样被吃掉的风险就会大大降低,但仍有一定的可能被吃掉,请你判断他们相乘后是否仍有被吃掉的风险。

也就是说,请你判断a×ba\times ba×b是否是素数。

素数是指大于111的正整数中,有且仅有两个因子的数。


题目解析

        判断两数相乘是否是素数。不能直接乘起来然后判断,因为数据量太大了,不仅存不下,而且会超时。因此根据素数的性质,分类讨论。

C++代码

#include <cmath>
#include <iostream>
using namespace std;

bool isPrime(long long x) // 参数也要开long long 
{
	if (x < 2)
		return false;
	for (int i = 2; i <= sqrt(x); ++i)
	{
		if (x % i == 0)
			return false;
	}
	return true;
}

int main()
{
	int t = 0;
	cin >> t;
	while (t--)
	{
		long long a = 0, b = 0;
		cin >> a >> b;
		if ((a == 1 && isPrime(b)) || (b == 1 && isPrime(a)))
			cout << "YES" << endl;
		else
			cout << "NO" << endl;
	}
	return 0;
}

Java代码

import java.util.*;
public class Main
{
    public static boolean isprim(long x)
    {
        if(x < 2) return false;
        for(int i = 2; i <= Math.sqrt(x); i++)
        {
            if(x % i == 0)
                return false;
        }
        return true;
    }

    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();
        while(t-- != 0)
        {
            long a = in.nextLong(), b = in.nextLong();
            if((a == 1 && isprim(b)) || (b == 1 && isprim(a)))
            {
                System.out.println("YES");
            }
            else
            {
                System.out.println("NO");
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GR鲸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值