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
// 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;
}
// 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;
}