文章目录
选号程序
标题
选号程序
类别
流程控制
时间限制
1S
内存限制
256Kb
问题描述
小明决定申请一个新的QQ号码,系统随机生成了若干个号码供他选择。小明的选号原则是:
1. 选择所有号码中各位数字之和最大的号码。
2. 如果有多个号码各位数字之和相同则选择数值最大的号码。
请你写一个程序帮助小明选择一个QQ号码。
输入说明
输入数据由两行构成,第一行为一个整数n表示有n个待选号码(0<n<100),第二行有n个正整数,表示各个待选的号码,每个号码长度不超过9位数。每个号码之间用空格分隔,且每个号码都不相同。
输出说明
输出根据小明的选号原则选出的号码。
输入样例
5
10000 11111 22222 333 1234
输出样例
22222
#include <stdio.h>
int main(){
int n,i;
int max = 0,sum = 0;
scanf("%d",&n);
int num[n];
int t,m;
for(i=0;i<n;i++){
scanf("%d",&num[i]);
m = num[i];
while(m!=0){
sum = sum+m%10;
m = m/10;
}
if(sum>max){
max=sum;
t=i;
}else if(sum==max){
t = num[i]>num[t]?i:t;
}
sum = 0;
}
printf("%d",num[t]);
return 0;
}
字符统计
标题
字符统计
描述
定义一个一维字符数组string[100],输入一个字符串,含N个字符(N≤100),定义一个整形数组num[5],用于存放统计结果数据,编写函数count()统计字符串中大写字母、小写字母、空格、数字以及其他字符的个数,使用指针完成地址传递,主函数完成数组输入和统计结果输出。
时间限制
1
内存限制
10000
类别
1
输入说明
输入一行字符串,100个以内。
输出说明
格式输出:输出大写字母、小写字母、空格、数字以及其他字符的个数信息,数据之间空一格。
输入样例
A 3cp &! 91 tD M
输出样例
3 3 5 3 2
提示
使用指针作形参,实现地址传递,输出数据之间空一格。
#include <stdio.h>
#include <string.h>
int main(){
int high,low,space,num,other;
high=low=space=num=other=0;
char s[100];
gets(s);
for(int i=0;i<strlen(s);i++){
if(s[i]>='A'&&s[i]<='Z'){
high++;
}else if(s[i]>='a'&&s[i]<='z'){
low++;
}else if(s[i]>='0'&&s[i]<='9'){
num++;
}else if(s[i]==' '){
space++;
}else other++;
}
printf("%d %d %d %d %d",high,low,space,num,other);
return 0;
}
年月日统计
题目:年月日统计
时间限制:1S
内存限制:10000Kb
问题描述:
定义一个结构体变量(包括年,月,日)。计算该日在本年中是第几天,(注意闰年问题)
输入说明:
输入三个数,分别表示年月日,数字之间用逗号隔开。
输出说明:
输出一个整数,表示该日期是本年中的第几天。
输入样例:
2019,1,30
输出样例:
30
#include <stdio.h>
int main(){
int year,mon,day;
scanf("%d,%d,%d",&year,&mon,&day);
int n[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if((year%4==0&&year%100!=0)||year%400==0){
n[1]=29;
}
int sum = 0;
for(int i=0;i<mon-1;i++){
sum = sum+n[i];
}
sum+=day;
printf("%d",sum);
return 0;
}
成绩处理
标题
成绩处理
描述
输入5个学生,4门课成绩,二维数组stu[5][4]表示,行标表示学生,列标表示课程成绩,分别编写函数aver()、fals()和well()完成:(1)求第一门课的平均分;(2)统计有2门以上(含2门)课程不及格的同学人数;(3)平均成绩在90分以上(含90分)或者全部课程成绩在85分以上(含85分)的同学视为优秀,统计人数,使用指针完成地址传递,主函数完成数组输入和输出。
时间限制
1
内存限制
10000
类别
1
输入说明
输入二维浮点型数组stu[5][4]
输出说明
输出第一门课程平均分(保留1位小数)、2门以上不及格人数和成绩优秀人数,数据之间空一格。
输入样例
85 73 59 92
93 95 89 88
86 88 88 87
59 51 52 68
78 32 59 91
输出样例
80.2 2 2
提示
注意行列信息。使用指针完成地址传递,主函数完成数组输入和输出。
#include <stdio.h>
double avera(double m);
int wel(double stu[5][4]);
int fals(double stu[5][4]);
int main(){
double stu[5][4],sum = 0;
double aver;
int num1,num2;
int i = 0,j = 0;
for(i=0;i<5;i++){
for(j=0;j<4;j++){
scanf("%lf",&stu[i][j]);
}
}
for(i=0;i<5;i++){
sum = sum+stu[i][0];
}
aver = avera(sum);
num1 = fals(stu);
num2 = wel(stu);
printf("%.1lf %d %d",aver,num1,num2);
return 0;
}
double avera(double m){
double aver;
aver = m/5;
return aver;
}
int fals(double stu[5][4]){
int i = 0,j = 0;
int count = 0,num = 0;
for(i = 0;i<5;i++){
count = 0;
for(j=0;j<4;j++){
if(stu[i][j]<60){
count++;
}
}
if(count>=2){
num++;
}
}
return num;
}
int wel(double stu[5][4]){
int i = 0,j = 0,w=0,p = 0;
double sum = 0;
for(i=0;i<5;i++){
sum = 0;
p=0;
for(j=0;j<4;j++){
sum = sum+stu[i][j];
if(stu[i][j]>=85){
p++;
}
}
if(sum>=360||p==4){
w++;
}
}
return w;
}
判断字符是否回文
试题名称 判断字符串是否是回文
时间限制: 1 秒
内存限制: 256KB
问题描述
给定一个字符串,判断该字符串是否是回文,并在屏幕上输出判断结果。如“abcba”即是回文。
输入说明
从键盘输入一个字符串,该字符串中字符可以是字母、数字和空格,字母区分大小写。字符串总长不超过50个字符。
输出说明
若该字符串是回文,则输出yes,否则输出no。
输入样例
输入样例1
abcba
输入样例2
Abccba
输出样例
输出样例1
yes
输出样例2
no
#include <stdio.h>
#include <string.h>
int main(){
int i = 0,j = 0;
char s[100];
gets(s);
int l = strlen(s);
for(i=0,j=l-1;i<l/2;i++,j--){
if(s[i]!=s[j]){
break;
}
}
if(i>=l/2){
printf("yes");
}else printf("no");
return 0;
}
字符串部分复制
试题名称 字符串部分复制
时间限制: 1 秒
内存限制: 256KB
问题描述
给定一个的字符串,从第m个字符开始复制成为另一个字符串。编写函数copystr( )完成字符串复制,使用字符类型的指针变量作为形参,主函数完成字符串输入和m值的输入,函数调用,以及最后结果的输出。
输入说明
第一行从键盘输入一个字符串,该字符串中字符可以是字母、数字、空格和其它字符。字符串总长不超过50个字符。
第二行输入整数m的值。
输出说明
若该字符串长度小于m,则输出error,否则输出从该字符串第m个字符复制的字符串。
输入样例
输入样例1
Abc ba/!.123
3
输入样例2
abced
6
输出样例
输出样例1
c ba/!.123
输出样例2
error
#include <stdio.h>
#include <string.h>
void copy(char s[],int m);
int main(){
char s[100];
gets(s);
int m;
scanf("%d",&m);
copy(s,m);
return 0;
}
void copy(char s[],int m){
if(m>strlen(s)){
printf("error");
}else if(m<= strlen(s)){
for(int i=m-1;s[i]!='\0';i++){
printf("%c",s[i]);
}
}
}
自然数求和
标题
自然数求和
描述
输入自然数N(N<65536),采用直到型循环结构,对不大于N的所有自然数求和,并输出。
时间限制
1
内存限制
10000
类别
1
输入说明
输入自然数N,如15
输出说明
输出不大于N的所有自然数之和
输入样例
15
输出样例
120
提示
采用while循环结构,不大于N的自然数之和
#include <stdio.h>
int main(){
int n,i=0;
scanf("%d",&n);
int sum = 0;
while(i<=n){
sum+=i;
i++;
}
printf("%d",sum);
return 0;
}
分解质因数
分解质因数
题目描述:
每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,
这几个素数就都叫做这个合数的质因数。编写程序将一个正整数分解质因数
输入描述:
输入一个正整数n(2<n<1000)
输出描述:
形如a*b*b*c,质因数按照从小到大的顺序排列
输入样例:
90
输出样例:
2*3*3*5`
#include <stdio.h>
#include <math.h>
int is_prime(int n);
int main(){
int n,i = 2;
int ret = 0,flag;
scanf("%d",&n);
while(i<=sqrt(n)){
while(n%i!=0){
i++;
}
if(n%i==0){
printf("%d",i);}
ret=is_prime(n/i);
if(i<n){
printf("*");
}
if(ret == 1){
printf("%d",n/i);
break;
}else n=n/i;
}
return 0;
}
int is_prime(int n){
int i = 2;
int flag = 0;
while(i<n){
if(n%i==0){
flag = 0;
break;
}
else i++;
}
if(i == n){
flag = 1;
}
return flag;
}
和差平方与平方和差
试题名称 problem1-6 和差平方与平方和差
时间限制: 1 秒
问题描述
输入两个大于 4 的正整数 a 和 b,分别计算(a+b)2、(a-b)2、a2+b2,、a2-b2,并找出其最大值
和最小值。
输入说明
输入为 2 个正整数 a 和b,4<= a, b <1000,整数之间由空格分开
输出说明
输出两个整数,分别表示(a+b)2、(a-b)2、a2+b2,、a2-b2 中的最大值和最小值,整数之间用
空格分隔。
测试样例:
输入样例 1
8 10
输出样例 1
324 -36
输入样例 2
36 5
输出样例 2
1681 961
#include <stdio.h>
int main(){
int a,b;
scanf("%d %d",&a,&b);
int s1,s2,s3,s4;
s1 = (a+b)*(a+b);
s2 = (a-b)*(a-b);
s3 = a*a-b*b;
s4 = a*a+b*b;
int n[4]={s1,s2,s3,s4};
for(int i=0;i<3;i++){
for(int j=i+1;j<4;j++){
if(n[i]>n[j]){
int t;
t=n[i];
n[i]=n[j];
n[j]=t;
}
}
}
printf("%d %d",n[3],n[0]);
return 0;
}
数字个数统计1
标题
数字个数统计
描述
统计区间为[100,500)内,能被7或11整除,但不能被7和11同时整除的整数个数。
时间限制
1
内存限制
10000
类别
1
输入说明
无
输出说明
输出个数统计结果
输入样例
无
输出样例
83
提示
采用for循环结构
#include <stdio.h>
int main(){
int i=100;
int count = 0;
for(i=100;i<500;i++){
if((i%7==0||i%11==0)&&(i%77!=0)){
count++;
}
}
printf("%d",count);
return 0;
}
数字个数统计2
标题
数字个数统计2
描述
输入一个正整数N(300≤N≤500),统计N(1~N)以内奇数、偶数和能分别被3、5、7整除的数字个数。
时间限制
1
内存限制
10000
类别
1
输入说明
输入正整数N(300≤N≤500),如452
输出说明
输出N以内奇数、偶数和能分别被3、5、7整除的数字个数
输入样例
452
输出样例
226 226 150 90 64
提示
编制子函数单数Odd()、双数Even()、Sum_3()、Sum_5()和Sum_7()分别实现数字统计和输出,无返回值,各输出之间空一个空格;
主函数调用
#include <stdio.h>
int Odd(int i){
int flag = 0;
if(i%2 == 1){
flag = 1;
}
return flag;
}
int Even(int i){
int flag = 0;
if(i%2 == 0){
flag = 1;
}
return flag;
}
int Sum_3(int i){
int flag = 0;
if(i%3 == 0){
flag = 1;
} return flag;
}
int Sum_5(int i){
int flag = 0;
if(i%5 == 0){
flag = 1;
} return flag;
}
int Sum_7(int i){
int flag = 0;
if(i%7 == 0){
flag = 1;
} return flag;
}
int main(){
int n;
int c1,c2,c3,c4,c5;
c1=c2=c3=c4=c5=0;
scanf("%d",&n);
for(int i = 1;i<=n;i++){
if (Odd(i) == 1){
c1++;
}
if( Even(i) == 1){
c2++;
}
if( Sum_3(i)==1){
c3++;
}
if( Sum_5(i)==1){
c4++;
}
if (Sum_7(i)==1){
c5++;
}
}
printf("%d %d %d %d %d",c1,c2,c3,c4,c5);
}
迭代法求根
题目:迭代法求根(1)
时间限制:1S
内存限制:10000Kb
问题描述:
用迭代法求,求平方根的迭代公式为
要求前后两次求出的x的差的绝对值小于。
输入说明:
输入浮点数a。
输出说明:
输出一个浮点数x,小数点后保留5位小数。
输入样例:
3
输出样例:
1.73205
#include <stdio.h>
#include <math.h>
int main(){
double a;
scanf("%lf",&a);
double x1,x2;
if(a==0){
printf("%.5lf",a);
}else{
x1=a/2;
x2=(x1+a/x1)/2;
do{
x1 = x2;
x2 = (x1+a/x1)/2;
} while(fabs(x1 - x2)>=1e-5);
printf("%.5lf",x2);}
return 0;
}
小球下落问题
题目:小球下落问题
时间限制:1S
内存限制:10000Kb
问题描述:
一个球从100m的高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第n次落地时,共经过多少米,第n次反弹多高。注:
输入说明:
输入一个整数,表示第n次落地反弹。
输出说明:
输出两个浮点数,表示小球经过的距离,和第n次反弹的高度,小数点后保留3位小数。
输入样例:
10
输出样例:
S=299.609 h=0.098
#include <stdio.h>
#include <math.h>
int main(){
int n;
scanf("%d",&n);
double s = 100,h,N;
N = s;
h = 100/pow(2,n);
for(int i=2;i<=n;i++){
s+=2*N/pow(2,i-1);
}
printf("S=%.3lf h=%.3lf",s,h);
return 0;
}
分宝物
海盗分宝物。两个寻宝者找到一个宝藏,里面包含5件物品,每件物品的价值分别是
w[n], w[n + 1], · · · , w[n + 4]。sA代表寻宝者A所获物品价值总和,sB代表寻
宝者B所获物品价值总和,请问怎么分配才能使得两人所获物品价值总和
差距最小,即两人所获物品价值总和之差的绝对值|sA − sB|最小。其中,w[n]数值为
第n个质数,第一个质数为2,第二个质数为3,第三个为5,n的数值由键盘输入,0 < n < 20。
输入示例1:
1
输出示例1:
0
提示,n=1,宝藏价值分别为2, 3, 5, 7, 11,二者之差绝对值,最小可以为0,所以输出为0。
输入示例2:
2
输出示例2:
1
#include <stdio.h>
#include <math.h>
int is_prime(int n);
int main(){
int num[30],i,j;
for( i=2,j=0;i<30;i++){
if(is_prime(i)==1){
num[j]=i;
j++;
}
}
int sum = 0,min=100,n;
scanf("%d",&n);
for(i=n-1;i<n+4;i++){
sum = sum+num[i];
}
for(i=n-1;i<n+3;i++){
for(j=i+1;j<n+4;j++){
int s=0;
s=sum-2*(num[i]+num[j]);
if(fabs(s)<min){
min = fabs(s);
}
}
}
printf("%d",min);
return 0;
}
int is_prime(int n){
int i;
for(i=2;i<n;i++){
if(n%i==0)
break;
}
int flag = 0;
if(n==i) flag=1;
return flag;}
阶乘运算
标题
阶乘运算
描述
编写P(m,n)=m!/n!/(m-n)!,(m>n)。求出P(m,n)的值。
时间限制
1
内存限制
10000
类别
1
输入说明
输入两个整数(m>n),如8 6
输出说明
输出保留2位小数
输入样例
8 6
输出样例
28.00
提示
采用for循环结构,数据类型为单精度浮点型,输出保留两位小数,格式%.2f。
#include <stdio.h>
float fac(int m);
int main(){
int m,n;
scanf("%d %d",&m,&n);
printf("%.2f",fac(m)/fac(n)/fac(m-n));
return 0;
}
float fac(int m){
float i=0,sum = 1;
for(i=1;i<=m;i++){
sum=sum*i;
}
return sum;
}
字符逆序排放
题目:字符逆序排放
时间限制:1S
内存限制:10000Kb
问题描述:
写一个函数,使输入的字符按照反序排放,在主函数中输入和输出字符。
输入说明:
输入一个字符串。
输出说明:
输出上述字符串的逆序排列。
输入样例:
animal
输出样例:
lamina
#include <stdio.h>
#include <string.h>
int main(){
char s[100];
gets(s);
int l = strlen(s);
for(int i=l-1;i>=0;i--){
printf("%c",s[i]);
}
return 0;
}
Fibonacci数列
标题
Fibonacci数列
类别
函数与递归
时间限制
2S
内存限制
1000Kb
问题描述
有一种形式的Fibonacci数列定义如下:
F(0)=7
F(1)=11
F(n)=F(n-1)+F(n-2)(n>=2)
按以下声明写一个函数fib
int fib(int n);
fib函数用来计算参数n对应的F(n)。
fib(n)的返回值是F(n)
输入说明
函数参数为一个整数n(0<=n<40)。
输出说明
函数返回值为整数,表示n对应的F(n)值。
输入样例
2
输出样例
18
#include <stdio.h>
int fib(int n){
int flag = 0;
if(n==0){
flag = 7;
}else if(n==1){
flag = 11;
}else flag = fib(n-1)+fib(n-2);
return flag;
}
int main(){
int n;
scanf("%d",&n);
printf("%d",fib(n));
return 0;
}
数列求和
标题
数列求和
类别
函数与递归
时间限制
1S
内存限制
1000Kb
问题描述
有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13,......An/Bn
A1=2,A2=3,An=An-1+An-2;
B1=1,B2=2,Bn=Bn-1+Bn-2。
求出这个数列的前n(2<=n<=30)项之和。
输入说明
一个整数n
输出说明
输出一个实数表示数列前n项之和,结果保留2位小数(四舍五入)
输入样例
2
输出样例
3.50
#include <stdio.h>
float fac(int m);
int main(){
int m,n;
scanf("%d %d",&m,&n);
printf("%.2f",fac(m)/fac(n)/fac(m-n));
return 0;
}
float fac(int m){
float i=0,sum = 1;
for(i=1;i<=m;i++){
sum=sum*i;
}
return sum;
}
字符串筛选
2.编写函数fun,其功能是将字符串s下标为奇数的字符删除,字符串中剩余字符形成的新字符串放在数组t中。
主函数中输入字符串s,调用函数,输出字符数组t。
输入说明:共一行,输入字符串s
输出说明:共一行,输出字符串t
输入示例:abcd1234
输出示例:ac13
#include <stdio.h>
#include <string.h>
void fun(char s[100]);
int main(){
char s[100];
gets(s);
fun(s);
return 0;
}
void fun(char s[100]){
int i,j;
char t[100];
for(i=0,j=0;i<strlen(s);i++){
if(i%2==0){
t[j]=s[i];
j++; }
}
for(j=0;j<strlen(t);j++){
printf("%c",t[j]);
}}
斐波那契数列素数判断
标题
斐波纳契数列
类别
函数与递归
时间限制
2S
内存限制
256Kb
问题描述
已知一个斐波纳契数列中的数字依次为1, 1, 2, 3, 5, 8, 13, 21, 34, 55 … 。请判断该数列中第n个数字(n从1开始计数)是不是素数。
输入说明
输入一个整数n(1<n<=40)。
输出说明
判断斐波纳契数列中的第n个数字是不是素数,如果是输出yes,否则输出该数字。
输入样例
样例1输入
6
样例2输入
4
输出样例
样例1输出
8
样例2输出
yes
#include <stdio.h>
int fib(int n){
int f;
if(n==1){
f = 1;
}else if(n==2){
f = 1;
}else f = fib(n-1)+fib(n-2);
return f;
}
int is_prime(int f){
int i = 0,flag = 0;
for(i=2;i<=f;i++){
if(f%i==0){
break;
}
}
if(f==i){
flag = 1;
}
return flag;
}
int main(){
int n,f;
scanf("%d",&n);
f = fib(n);
if(is_prime(f)==1){
printf("yes");
}else printf("%d",f);
return 0;
}
哥德巴赫猜想
标题
歌德巴赫猜想
类别
函数与递归
时间限制
2S
内存限制
10000Kb
问题描述
德巴赫猜想:
任意一个大偶数都能分解为两个素数的和,
对与输入的一个正偶数,写一个程序来验证歌德巴赫猜想。
由于每个正偶数可能分解成多组素数和,仅输出分解值分别是最小和最大素数的一组,按从小到大顺序输出。
输入说明
输入一个正偶数n,1<n<1000。
输出说明
输出分解出的两个最小和最大素数。
输入样例
10
输出样例
3 7
#include <stdio.h>
int is_prime(int f){
int i = 0,flag = 0;
for(i=2;i<=f;i++){
if(f%i==0){
break;
}
}
if(f==i){
flag = 1;
}
return flag;
}
int main(){
int n;
scanf("%d",&n);
int i = 2;
for(i=2;i<n;i++){
if(is_prime(i)==1&&is_prime(n-i)==1){
printf("%d %d",i,n-i);
break;
}
}
return 0;
}
水仙花数
题目:
水仙花数
类别
流程控制
时间限制
2S
内存限制
10000Kb
问题描述
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
(例如:1^3 + 5^3 + 3^3 = 153)。
定义一个函数int function(int a, int b),计算区间[a,b]或区间[b,a]上水仙花数的个数。
输入说明
输入由两个整数a和b构成,a和b之间用空格分隔。0<a,b<10000
输出说明
输出区间[a,b]或区间[b,a]上水仙花数的个数。
输入样例
3 1000
输出样例
4
提示
a,b的位数n可能小于3
递归数列
标题:
递归数列
类别
函数与递归
程序类型:
代码片段
时间限制:
2S
内存限制
10000Kb
问题描述
一个数列A定义如下
A(1)=1,
A(2)=1/(1+A(1)),
A(3)=1/(1+A(2)),
……
A(n)=1/(1+A(n-1))。
定义一个函数function用来计算数列的第第n项的值,函数声明如下:
double function(int n);
输入说明:
输入为1个正整数n,n<=10。
输出说明
函数输出数列A第n项的值,结果小数点后保留6位有效数字,多余部分四舍五入。
输入样例
5
输出样例
0.625000
提示
所有浮点数使用双精度浮点来运算!!!
#include <stdio.h>
double function(int n){
double a;
if(n==1){
a = 1;
}else {
a = 1/(1+function(n-1));
}
return a;
}
int main(){
int n;
scanf("%d",&n);
printf("%.6lf",function(n));
}
位数判断
problem 3-6. 位数判断
题目描述:
输入一个不大于 9 位数的非负整数 m,判断 m 是几位数?
输入说明:
输入为一个整数 m,范围 0<=m<=999999999
输出说明:
输出一个整数,表示整数 m 的位数
输入样例:
3456
输出样例:
4
#include <stdio.h>
int main(){
int n,num=0;
scanf("%d",&n);
if(n==0){
num=1;
}
while(n!=0){
n = n/10;
num++;
}
printf("%d",num);
return 0;
}
亲和数
problem 4-6 亲和数
时间限制:1S
题目描述:
古希腊数学家毕达哥拉斯在自然数研究中发现,220 的所有真约数(即不是自身的约数)之和为:
1+2+4+5+10+11+20+22+44+55+110=284
而 284 的所有真约数为 11、22、44、7171、142142,加起来恰好为 220。人们对这样的数感到很惊奇,并称之为亲和数。
一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。
你的任务就编写一个程序,判断给出的两个整数m和n是不是亲和数(m和n可以相同)。
输入说明
输入为两个整数n和m,(1<n,m≤10000),n和m之间用空格分隔
输出说明
在同一行上输出为三项,用空格分隔。
第一项表示判断结果,如果两个数是亲和数输出yes,否则输出no;
第二项是一个整数,表示n的真约数个数;
第三项是一个整数,表示m的真约数个数。
测试样例
输入样例1:
220 284
输出样例1:
yes 11 5
输入样例2:
4 3
输出样例2:
no 2 1
#include <stdio.h>
int main(){
int m,n,c1 = 0,c2 = 0;
int s1 = 0,s2 = 0;
scanf("%d %d",&m,&n);
int i;
if(m==0){
c1=1;
}else{
for(i=1;i<m;i++){
if(m%i==0){
s1+=i;
c1++;
}
}}
if(n==0){
c2=1;
}else {
for(i=1;i<n;i++){
if(n%i==0){
s2+=i;
c2++;}
}}
if(s1==n&&s2==m){
printf("yes ");
}else printf("no ");
printf("%d %d",c1,c2);
return 0;
}
质数求和
problem 4-6 质数求和
时间限制:1S
问题描述
输入一个大于20的正整数p,求出正整数范围内第p个质数(或素数,大于1且只能被1和自己整除的正整数,)到第p+10个质数之和。其中,第1个质数为2,第2个质数为3,第3个质数为5,第4个质数为7,依次类推。
输入说明
一行输入1个整数p,20< p <150。
输出说明
第p个质数到第p+10个质数之和。
输入样例:
21
输出样例:
1081
#include <stdio.h>
int is_prime(int n){
int i;
for(i=2;i<=n;i++){
if(n%i==0){
break;
}
}
int flag = 0;
if(n==i) flag = 1;
return flag;
}
int main(){
int i = 0,j,num[200];;
int p,sum = 0;
scanf("%d",&p);
for(i = 2,j=0;j<200;i++){
if(is_prime(i)==1){
num[j]=i;
j++;
}
}
for(i=p-1;i<=p+9;i++){
sum = sum+num[i];
}
printf("%d",sum);
return 0;
}
码字不易,给个👍~我们下一篇博客见!
才疏学浅,个人理解难免有错,欢迎指正。