1061

这道题解法多样,我的是劳模做法。下面附一些大神级别的让人脑洞大开的解法。。。

1,、劳模做法:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<iomanip>
using namespace std;
const int MAX = 5845;
int main()
{
    long long n;
    int T;
    while(cin>>T)
    {
        while(T--){
        cin>>n;
        int x = n%10;
        switch(x)
        {
            case 0: cout<<x<<endl; break;
            case 1: cout<<x<<endl;  break;
            case 2: cout<<((n/10)%2?"6":"4")<<endl; break;
            case 3: cout<<((n/10)%2?"3":"7")<<endl; break;
            case 4: cout<<"6"<<endl; break;
            case 5: cout<<x<<endl; break;
            case 6: cout<<x<<endl; break;
            case 7: cout<<((n/10)%2?"7":"3")<<endl; break;
            case 8: cout<<((n/10)%2?"4":"6")<<endl; break;
            case 9: cout<<x<<endl;
        }
    }
    }
    return 0;}

某大神叼炸天的打表,可以说是劳模做法的简化版

#include <iostream>
using namespace std;

int main(){
	int n,m;
	int a[10][4] = {{0,0,0,0},{1,1,1,1},{2,4,8,6},{3,9,7,1},{4,6,4,6},{5,5,5,5},{6,6,6,6},{7,9,3,1},{8,4,2,6},{9,1,9,1}};
	cin>>m;
	while(m--)
		cin>>n,cout<<a[n%10][n%4-1>=0?n%4-1:3]<<endl;
	return 0;
}


接下来是一个功能函数,他用的是递归,也是蛮精简的:

int solve(int n,int m){
	if(m==0) return 1;
	if(m==1) return n;
	if(m%2==0) return solve(n*n%10,m/2);
	if(m%2!=0) return n*solve(n*n%10,(m-1)>>2)%10;
}




<think>好的,用户想知道如何用编程判断数字1061是否为质数。首先,我需要回顾质数的定义:质数是大于1的自然数,除了1和它本身外,没有其他因数。所以判断方法就是检查从2到该数平方根之间的所有整数是否能整除它。如果有任何一个数能整除,就不是质数;否则就是质数。 接下来,用户可能需要具体的代码示例。根据提供的引用资料,引用[4]中有一个C语言的例子,用循环从2到平方根检查,这可能适用于其他语言。不过用户可能希望用特定的编程语言实现,比如Python或C++。但问题中没有指定语言,所以应该给出通用的方法或者选择一种常用语言,比如Python,因为它的语法简洁,容易理解。 然后,考虑如何优化算法。例如,检查到平方根即可,不需要到数值本身,这样可以减少循环次数。此外,偶数除了2之外都不是质数,可以先检查是否为偶数,再进行奇数因子的检查,提高效率。 对于具体的数字1061,先计算它的平方根大约是32.57,所以只需要检查到32。同时,1061是奇数,不需要检查偶数因子,可以只检查3到32之间的奇数是否有能整除1061的。例如,3、5、7…31。如果都不能整除,1061就是质数。 编写代码的话,可以创建一个函数is_prime,接受一个数作为参数,返回是否是质数。函数内首先处理小于2的情况,返回False。然后检查是否是2,是的话返回True。接着检查是否为偶数,是的话返回False。之后循环从3开始,步长为2,直到平方根,检查是否有因子。如果有,返回False,否则返回True。 测试这个函数时,输入1061,应该返回True,说明它是质数。验证一下是否正确,比如手动检查1061是否能被3整除:3*353=1059,余2;5*212=1060,余1;7*151=1057,余4;继续下去,发现到31时,31*34=1054,余7。所以没有因子,确实是质数。 最后,用户可能需要知道如何在不同编程语言中实现,但根据引用资料中的例子,可能更倾向于C或Python。这里选择Python,因为引用[2]提到了Python的判断方法,可以结合给出的例子,写出相应的代码。</think>要判断数字1061是否为质数,可通过编程实现以下步骤: ### 方法原理 质数的定义为:大于1的自然数,除1和其本身外无其他因数[^4]。判断方法的核心是验证从2到$\sqrt{n}$之间是否存在能整除$n$的数。若存在则非质数,否则是质数。 ### 实现步骤(Python示例) ```python import math def is_prime(n): if n <= 1: return False elif n == 2: # 2是唯一的偶质数 return True if n % 2 == 0: # 排除其他偶数 return False max_divisor = math.isqrt(n) # 计算平方根并取整 for d in range(3, max_divisor + 1, 2): # 仅检查奇数因子 if n % d == 0: return False return True # 调用函数判断1061 print(is_prime(1061)) # 输出:True ``` ### 代码解析 1. **边界处理**:若$n \leq 1$直接返回`False`,若$n=2$直接返回`True`; 2. **偶数排除**:若$n$为偶数且不等于2,直接判定非质数; 3. **优化循环**:仅遍历3到$\sqrt{n}$之间的奇数,步长为2; 4. **整除检查**:若发现可整除的因子,立即返回`False`; 5. **结果返回**:若循环结束未发现因子,返回`True`。 ### 验证结果 对于$n=1061$,其平方根约为32.57,循环检查3至32的奇数,均无法整除,因此判定为质数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值