标题:超级素数问题!!!!
只看楼主
风海流
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2010-12-8
结帖率:0
已结贴  问题点数:20 回复次数:4 
超级素数问题!!!!
我试了好几天了,就是运行部正确!!!!!!郁闷!!
友友帮我看看
第一种:
#include "stdio.h"
void main()
{int a,c,i;
    for(a=11;a<10000;a+=2)
    {
        c=a;
        fuck:for(i=2;i<a;i++)
             if(a/i==0)
              break;
             if(i>=a)
             {
                 a=a/10;
                 if(a==1)
                 continue;
                 else if(a==0||a==2)
                 printf("%d",c);
                 else if(a>2)
                 /*goto fuck;*/
             }
    }
   
   
}
第二种:
int fn(int x)
{
 int i,b,p;
 if(x==1||x==4||x==6||x==8||x==9)
   p=0;
 else
 {
   for(i=2;i<x;i++)
   if(x/i==0)
    p=0;
   if(i==x)
    p=1;
 }
 return p;
}
main()
{
int x,a,c,t=0,b=0,w=0;
for(x=11;x<10000;x+=2)
 {
  c=x;
  do
  {
   x=x/10;
   t++;
  }
  while(x>10);
  while(b!=t+1)
  {
   x=c;
   if(fn(x)==0)
    break;
   if(fn(x)==1)
    w=x;
    x=x/10;
    b++;
  }
  if(b==t+1)
  printf("%d",b*w);
  }
  }
搜索更多相关主题的帖子: 素数 超级 
2010-12-08 17:15
风海流
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2010-12-8
得分:0 
求解、、、、、、、、、、、、、
2010-12-08 17:36
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
得分:7 
都是穷举,不过好像是第二种效率高一些

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-12-08 18:23
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
得分:7 
建议你应该从新写个程序吧,这两个程序写的很差劲!




[ 本帖最后由 我菜119 于 2010-12-8 21:43 编辑 ]

愿用余生致力编程
2010-12-08 21:41
budong998
Rank: 2
等 级:论坛游民
帖 子:25
专家分:15
注 册:2010-7-18
得分:7 
我也是刚刚在学习C语言,自己编了一个:输入任意数N,求N以内的超级素数.程序如下.没有去一个个验证,不知道运行结果是否正确.请前辈们看看,程序有没有不妥的地方,或是可以怎样优化一下.
#include <stdio.h>
#include <math.h>
int prime(int i)    /*定义一个求素数的子函数*/
{
    int x;
     for(x=2;x<sqrt(i);x++)
        if(i%x==0)
            return 1;
        if(x>sqrt(i))
            return 0;
}
    main()
{
    int a,b=10,c,x,i;
    begin:
    printf("input a number:\n");/*提示输入*/
    scanf("%d",&a);
    if(a<11)             /*如果输入小于10,返回开始重新输入*/
    {
        printf("input error!\n");
        goto begin;
    }
    while(b<=a)            /*循环条件*/
    {
        c=prime(b);           /*调用子函数求B是否为素数,是素数返回0*不是则返回1*/
        x=b;i=0;
        while(c==0&&i==0&&x>9)/*如果B是素数,则再做以下盾环,求出是否为超级素数*/
        {
            x=x/10;
           if(x>1)i+=prime(x);   /*排除最高位为1的数,调用子函数求去掉个位数后是否为素数,是素数返回0并相加,不是则返回1相加*/
           else i++;
        }
        if(c==0&&i==0)    /*如果每次调用后返回的都是0,那么这个数就是超素数,就输出这个数.*/
            printf("%d\t",b);
        b++;
    }
}
   

[ 本帖最后由 budong998 于 2010-12-9 21:42 编辑 ]
2010-12-09 07:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-328382-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.062724 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved