4.数学游戏

丹丹在数学学习上碰到了一个难题,特别是除法那一块。她面对这样一个数学游戏:给定一个正整数 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 <= 102n106,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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值