JG-OJ记录103:11:伪素数

it2025-11-28  9

描述

判断一个数字a是否是m-伪素数。 m-伪素数的定义如下:如果一个大于1的整数a,除了1和自身外,能够整除的数字不多于m个,则称数字a是一个m-伪素数。 例如10是一个2-伪素数,因为10除了1和10以外,能够整除的数字有2和5,不多于2个。当然10也可以称为3-伪素数。

输入

第1行是一个正整数n,表示测试案例的数量。 从第2行到第n+1行,每行是一组测试案例,有两个整数a和m(其中a>1,m>=0)

输出

针对每组案例,如果a是m-伪素数,则输出yes,否则输出no。每组案例输出完都要换行。

样例输入 复制样例

2

12 2

12 4

样例输出

no

yes

HINT 

解:

正常循环会超时,但:

例如12 算2的时候可以同时可以算上6,算3的时候算上4

#include<iostream> #include<cmath> using namespace std; int main() { int n; cin>>n; for(int i=1;i<=n;i++) { int a,b,m=0; cin>>a>>b; int sq=sqrt(a); for(int j=2;j<=sq;j++) { if(a%j==0) { if(j!=sqrt(a)) { m+=2; } else m++; } } //cout<<m<<endl; if(m<=b) cout<<"yes"<<endl; else cout<<"no"<<endl; } return 0; }

 

最新回复(0)