题目描述
高橋君は素数判定アルゴリズムが大好きです。毎日さまざまな素数判定アルゴリズムを実装して遊んでいます。 しかし、高橋君は素数判定をしすぎてしまったので、素数判定に飽きてしまいました。 そこで高橋君は、「素数っぽく見える数」判定をすることにしました。
1 1 1 以上の整数 N N N は、以下のように「素数っぽい」かどうかが判定されます。
- N N N が素数であるなら、 N N N は「素数っぽい」
- N N N が合成数であるなら、 N N N を 10 10 10 進表記した時の 1 1 1 の位が偶数でも 5 5 5 でもなく、各桁の和が 3 3 3 で割り切れないならば、 N N N は「素数っぽい」
- それ以外の場合、 N N N は「素数っぽくない」
整数 N N N が与えられるので、 N N N が「素数っぽい」場合は"Prime"、そうでない場合は"Not Prime"と出力してください。
输入格式
入力は以下の形式で標準入力から与えられる。
$ N $
- 1 1 1 行目には、整数 N(1 ≦ N ≦ 109) N(1\ ≦\ N\ ≦\ 10^9) N(1 ≦ N ≦ 109) が与えられる。
输出格式
N N N が「素数っぽい」場合は"Prime"、そうでない場合は"Not Prime"と出力せよ。
出力の末尾に改行を入れること。(21:40修正)
题意翻译
如果 n 是素数, n 是素数。 如果N是一个合数且N既不是偶数也不是5的倍数,并且如果每个数字的和不能被3整除,则N是类似素数的 否则, n 不是素数
类似素数的和素数都输出“Prime” 否则输出“Not Prime”
感谢@LW_h_FP 提供的翻译
输入输出样例
输入 #1
42
输出 #1
Not Prime
输入 #2
49
输出 #2
Prime
输入 #3
3
输出 #3
Prime
输入 #4
1
输出 #4
Not Prime
// Created on 2020/2/4
/*#include <iostream>
#include <cstring>
#include <cstdlib>
#include <algorithm>*/
#include <bits/stdc++.h>
#define A 500+5
using namespace std;
//int i,j,k;
const int maxn=INT_MAX;
const int idata=20+5;
int a[idata],temp[idata];
bool judge[idata];
//int cnt;
int n,r;
inline bool primer(long long n)
{
if(n==1)return false;
if(n==2||n==3||n==5)return true;
if(n%2!=0&&n%3!=0&&n%5!=0) return true;
return false;
}
int main()
{
long long n;
cin>>n;
if(primer(n))
cout<<"Prime"<<endl;
else cout<<"Not Prime"<<endl;
return 0;
}