1-1 改错题
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
查找介于n1与n2(0<n1<n2<32768)之间所有满足下列条件的整数:(1)该数的十进制表示中有且仅有两个相同的数字位;(2)该数是素数。
输入两行,第1行一个整数n1,第2行一个整数n2。
输出多行,每行8个整数,分隔符为Tab。
【含有错误的源程序】
#include<stdio.h>
#include<math.h>
int validate(int n)
{ int i,j,k=0,num[5]={0},size=0;
do
{ num[size]=n%10;
n=n/10;
size++;
}while(n<0);
for(i=0;i<size-1;i++)
for(j=i+1;j<size;j++)
if(num[i]==num[j])
k=k+1;
if(k>1)
return 1;
else
return 0;
}
int prime(int)
{ int i;
for (i=2;i<=(int)sqrt(n);i++)
if(n%i==0)return 0;
return 1;
}
void main()
{ int i,count=0,n1,n2;
scanf("%d%d",&n1,&n2);
for(i=n1;i<=n2;i++)
{ if(validate(int i)&& prime(int i))
{ count++;
printf("%d\t",i);
if(count%8==0)printf("\n");
}
}
}
测试样例:
输入
900
1200
输出
911 919 929 977 991 997 1009 1013
1019 1021 1031 1033 1051 1061 1091 1103
1109 1123 1129 1153 1163 1187 1193
基于整数数组的编程技能的进阶训练及二级真题训练(2019-4-13)
- 状态
- 已结束
- 规则
- ACM/ICPC
- 题目
- 9
- 开始于
- 2019-04-13 18:00
- 结束于
- 2019-04-13 22:00
- 持续时间
- 4.0 小时
- 主持人
- 参赛人数
- 50