九度-1163 素数

题目描述:

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值