C语言 N位绝对素数输出

C语言 N位绝对素数输出

绝对素数概念

首先,我们要了解什么是绝对素数。

素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

绝对素数是指本身是素数,其逆序数也是素数的数。例如:10321与12301是绝对素数。

了解了这个概念之后,我们一步步来写代码

素数

我们写一个简单的C语言素数程序,以100以内打个例子,oh,不,举个比方。

(可以根据自己的需要,改变for循环里面的值)

基本思路就是:给定一个数,根据定义,去除1和本身,我们从2开始用for循环遍历所有可能的数来判定是否为给定数的因数。

#include <stdio.h>

int main()

{

    int m, k, i;
    
    for(m=1;m<100;m++)
    {
        k=m-1;
    
        for(i=2;i<=k;i++)            //遍历所有除本身之外的,可能的因数,即2 ~ m-1 
        {
        
        if(m%i==0)    break;                //如果碰到因数,跳出循环 
        
        }
        
        if(i==m)   printf("%d  ",m);       //如果是素数的话,for循环最后的i会变成m,即最大因数是本身
        
         
    } 
    

       system("pause");

       return 0;

}

OK,有了素数的程序,和绝对素数的概念,我们只需要嵌套循环再写一个逆序,并判定一次就可以了。

绝对素数

这里以求所有四位绝对素数为例,即从1000~9999

#include <stdio.h>

int main()

{

    int m, k, i;
    
    int m1,m2,m3,m4,m5;
    
    for(m=1000;m<10000;m++)
    {
        k=m-1;
    
        for(i=2;i<=k;i++)            //遍历所有除本身之外的,可能的因数,即2 ~ m-1 
        {
        
        if(m%i==0)    break;                //如果碰到因数,跳出循环 
        
        }
        
        if(i==m)     
        {
           m1=m/1000;
           m2=m%1000/100;
           m3=m/100%10;
           m4=m/10;
           m5=m4*1000+m3*100+m2*10+m1;    //逆序数    
           
            k=m5-1;
        
            for(i=2;i<=k;i++)              //求证逆序数是否为素数 
            {
            
            if(m5%i==0)     break;
            
            }   
            
            if(i==m5)   printf("%d  ",m);             
        
        } 
    } 
    

       system("pause");

       return 0;

}

一个减少运算量的小tip

可以用 k=sqrt(m);
来代替 k=m-1;

原因就不多说啦,不懂的话随便找个小一点的数模拟一下。

现学现卖,欢迎指正,hh。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值