1-1 改错题

1-1 改错题

测试数据来自 nnu_contest/5c20a303f413620f5ddd2c09

查找介于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

信息

ID
1675
难度
(无)
分类
(无)
标签
递交数
0
已通过
0
通过率
?
上传者