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