2 u012190388 u012190388 于 2016.03.19 10:49 提问

编程问题 C C#语言 最好能给出代码,求大神!

1.从键盘接受两个任意正整数,要求第一个正整数必须小于第二个正整数,然后把这两个数范围内(包括这两个数)的所有偶数分解为两个素数之和,并输出每个偶数以及对应的两个素数。

2.编写程序,将输入的一行字符串加密。加密时,每个字符的ASCII码依次反复加上密码表4,9,6,2,5,7,3中对应的数字。
如果相加的结果超过字符Z的ASCII码122,则进行取模运算。加密与解密的顺序相反,要求编写加密和解密两个函数,
输出各个过程的结果。
如输入“The result of 3 and 2 is not 8”,应该r加5,u加4

2个回答

FlushHip
FlushHip   2016.03.19 11:53
已采纳

// 1

#include <stdio.h>
#include <string.h>

const int M=100005;

bool prime[M];

void get_prime()
{
    memset(prime,true,sizeof(prime));
    prime[1]=false;
    for(int i=2;i<M;i++)
        if(prime[i])
            for(int j=2;j*i<M;j++)
                prime[i*j]=false;
}

void deal(int x)
{
    for(int i=2;i<=x/2;i++)
        if(prime[i]&&prime[x-i]){
            printf("%d: 1:%d 2:%d\n",x,i,x-i);
            return ;
        }
}

int main()
{
    get_prime();
    int x,y;
    while(~scanf("%d%d",&x,&y)){
        for(int i=x%2? x+1:x;i<=y;i+=2)
            deal(i);
    }
    return 0;
}


FlushHip
FlushHip   2016.03.19 12:12

// 2

#include <stdio.h>
#include <string.h>

const int M=10000;

const int Num[7]={4,9,6,2,5,7,3};

void incode(char *str_1,char *str_2,int len)
{
    int index=0;
    for(int i=0;i<len;i++)
        str_2[i]=(str_1[i]+Num[(index++)%7])%122;
    str_2[len]=0;
}

void decode(char *str_1,char *str_2,int len)
{
    int index=0;
    for(int i=0;i<len;i++)
        str_2[i]=(str_1[i]-Num[(index++)%7]+122)%122;
    str_2[len]=0;
}

void print(char *str,int len)
{
    for(int i=0;i<len;i++)
        putchar(str[i]);
    puts("");
}

int main()
{
    char code[M];
    while(gets(code)){
        int len=strlen(code);
        char tmp_string[M];
        incode(code,tmp_string,len);
        print(tmp_string,len);
        char ans[M];
        decode(tmp_string,ans,len);
        print(ans,len);
    }
    return 0;
}


Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!