• 数学问题


    输出所有4位超级素数:前1位,前2位,前3位,前4位全是素数。

     

    #include <bits/stdc++.h>
    using namespace std;
    
    bool isPrime(int a){
        if(a<=1)
            return false;
        int sqr=(int)sqrt(1.0*a);
        for(int i=2;i<=sqr;i++){//从2开始!
            if(a%i==0)
                return false;
        }
        return true;
    }
    
    int main(){
        int cnt=0;
        for(int i=2;i<10;i++){
            if(isPrime(i)){
                for(int j=2;j<10;j++){
                    int temp1=i*10+j;
                    if(isPrime(temp1)){
                        for(int k=2;k<10;k++){
                            int temp2=temp1*10+k;
                            if(isPrime(temp2)){
                                for(int l=2;l<10;l++){
                                    int temp3=temp2*10+l;
                                    if(isPrime(temp3)){
                                        cnt++;
                                        cout<<temp3<<" ";
                                        if(cnt%6==0)
                                            cout<<endl;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        return 0;
    }

     

     

    输入一个长整型 数字 输出所有 小于等于这个数字的梅森素数

    梅森数,是指形如2p-1的一类数,其中指数p是大于等于2的正整数,常记为M(p) 。如果梅森数是素数,就称为梅森素数。

    #include <bits/stdc++.h>
    using namespace std;
    
    bool isPrime(int a){
        if(a<=1)
            return false;
        int sqr=(int)sqrt(1.0*a);
        for(int i=2;i<=sqr;i++){
            if(a%i==0)
                return false;
        }
        return true;
    }
    
    int main(){
        int n;
        cin>>n;
        for(int i=0;i<=n;i++){
            if(isPrime(i)){
                int m=(int)pow(2.0,1.0*i)-1;
                if(m>n)
                    break;
                if(isPrime(m))
                    cout<<"M("<<i<<")="<<m<<endl;
            }
        }
        return 0;
    }

    输入一个占32 3232比特位的十进制正整数,按下述规则输出加密后的十进制整数:

    设这个整数的二进制表示为xxxx pppp xxxx eeee xxxx eeee xxxx eeee,将其中标记为e的均左移8位,标记为p的右移24位,标记为x的位置不变,输出加密后的数的十进制表示
    Sample Input:
    1234
    Sample Output:
    262864

    #include <bits/stdc++.h>
    using namespace std;
    
    int a[8]={0};
    
    int main(){
        int n;
        cin>>n;
        for(int i=7;i>=0;i--){
            a[i]=n&15;
            n>>=4;//第一次写的n>>4 我说怎么一直不对
        }
        int res=0;
        for(int i=0;i<8;i++){
            if(i%2==0){
                res=res|a[i];
            }
            else
                res=res|a[(i+2)%8];
            if(i!=7)
                res<<=4;
        }
        cout<<res<<endl;
        //cout<<(-1)%8<<endl;
        return 0;
    }

    输入两个整数a aa和n nn,要求从a aa中删除n nn个位置上的数后剩下的数按原来的相对顺序组成的新数最小,求这个数
    Sample Input:
    62354 2
    Sample Output:
    234

    //为什么不多给几个测试用例!
    #include <bits/stdc++.h>
    using namespace std;
    
    int fig[1000]={0};
    int res[1000]={0};
    
    int findmin(int a[],int low,int high){
        int minidx=low;
        int i;
        for(i=low;i>=high;i--){
            if(a[i]<a[minidx]){
                minidx=i;
            }
        }
        return minidx;
    }
    
    int main(){
        int a,n;
        cin>>a>>n;
        int len=0;
        while(a>0){
            fig[len++]=a%10;
            a/=10;
        }
        int cnt=len-n;
        int k=0;//控制挑选数字的次数
        int low=len-1;
        int high;
        while(k<cnt){
            high=cnt-k-1;
            int idx=findmin(fig,low,high);
            res[k++]=fig[idx];
            low=idx-1;
        }
        for(int i=0;i<cnt;i++){
            cout<<res[i];
        }
        return 0;
    }
  • 相关阅读:
    云计算、大数据和人工智能简单概述
    Linux 文件管理命令语法、参数、实例全汇总(一)
    C#之继承
    类和结构(二)
    类和结构(一)
    C#基础语法(二)
    C#基础语法(一)
    dotnet体系结构
    九卷读书:刘润商学院学习笔记1
    Linux内存管理
  • 原文地址:https://www.cnblogs.com/yaotong0830/p/16009928.html
Copyright © 2020-2023  润新知