-
题目描述:
-
输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。
-
输入:
-
输入有多组数据。
每组一行,输入n。
-
输出:
-
输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。
-
样例输入:
-
100
-
样例输出:
-
11 31 41 61 71
-
错误原因:
-
素数判断的地方,循环条件应该用<=sqrt(n),写成<sqrt(n),可能会漏过某些特殊情况。另外注意不要输出1和n以及输出格式。
代码:
# include <stdio.h>
# include <math.h>
int main ()
{
int n,t,p,i,j,f1,f2;
while (scanf ("%d",&n)!=EOF)
{
f1=0;
if (n%10>1)
t=n/10;
else
t=n/10-1;
for (i=1;i<=t;i++)
{
p=i*10+1;
for (f2=0,j=3;j<=sqrt(p);j++)
if (p%j==0)
{
f2=1;
break;
}
if (f2==0)
{
f1++;
if (f1==1)
printf ("%d",p);
else
printf (" %d",p);
}
}
if (f1==0)
printf ("-1");
printf ("\n");
}
return 0;
}