数学问题

输出所有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;
}
复制代码

 

posted @   完全感覚Dreamer  阅读(85)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示