九度-1163 素数

来源:互联网 发布:java导出压缩包 编辑:程序博客网 时间:2024/06/10 15:07
题目描述:

输入一个整数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;}


原创粉丝点击