丹丹在数学学习上碰到了一个难题,特别是除法那一块。她面对这样一个数学游戏:给定一个正整数 nnn,她可以找一个大于111且能整除 nnn 的正整数 xxx,然后用 nnn 除以 xxx。她可以一直这么做,直到 nnn 成为一个不能再被其他大于1的正整数整除的大数(也就是质数)。问题是,丹丹要这么操作几次,才能让 nnn 成为一个大数(质数)呢?丹丹对除法有点犯迷糊,所以想请你帮忙解答。
比如,如果开始的数字是 n=8n = 8n=8,可以先拿 888 除以能整除它的数 222,这样得到 444,然后再用 444 除以能整除它的数 222,得到 222。这时候,nnn 已经是一个大数(质数)了。这里展示的步骤可能不是最少的,但我们的目标是找到最少的操作次数。
输入格式
输入第一行,一个正整数 TTT,表示询问的次数,接着 TTT 行,每行一个正整数 aia_iai
输出格式
对于每个 aia_iai,输出丹丹要操作几次,才能让 aia_iai 成为一个大数(质数),每个答案一行。
输入/输出例子1
输入:
2
8
5
输出:
1
0
样例解释
将 888 除以 444,得到大数(质数)222,只需 111 次;555 本身就是大数(质数),不需要再额外操作。
数据范围
2≤n≤106,T<=102 ≤ n ≤ 10^6,T <= 102≤n≤106,T<=10
c++:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m=0,b,c=0;
cin>>n;
for(int i=1;i<=n;i++){
cin>>b;c=0;
for(int j=1;;j++){
for(int z=b-1;z>=2;z--){
if(b%z==0){cout<<1<<endl;c=1;break;}
}
if(c==0){cout<<0<<endl;}
break;
}
}
return 0;
}
529

被折叠的 条评论
为什么被折叠?



