| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1520 人关注过本帖, 1 人收藏
标题:Smith数问题,请大家帮忙啊!谢谢~
只看楼主 加入收藏
qishiye007
Rank: 2
等 级:论坛游民
帖 子:19
专家分:20
注 册:2011-2-16
结帖率:66.67%
收藏(1)
已结贴  问题点数:5 回复次数:28 
Smith数问题,请大家帮忙啊!谢谢~
Smith数是指:对于一个整数,如果它的各位之和等于它的所有质因数的各位之和,那么就是Smith数。
图片附件: 游客没有浏览图片的权限,请 登录注册

原题在右边,图有些小,见谅啊!谢谢!
以下是我的代码:
程序代码:
#include<stdio.h>

void main()
{
    int n,i,sum=0;
    int a[100]={0},b[100];
    int j=0,m=0;
    int k,plus=0,count=0;
    int t,p;     //中间变量

    printf("输入数字:\n");

    while(scanf("%d",&n) && n!=0)
    {  
        t=n;

        while(t!=0)//求输入数字的各个位之和
        {
            sum+=t%10;
            t=t/10;
        }
      
        for(i=3; i<n && i%2!=0; i++) //求其所有因子的各个位之和
        {
            if(n%i==0)
            {
                p=i;

                while(p!=0)
                {
                    a[j]+=p%10;
                    p=p/10;
                }
               
                j++;
           
             n=n/i;
            }
        }

    

    for(k=0;k<j;k++)
    {
      plus+=a[k];
    }


      //plus+=2;
    
     if(plus==sum)
    {
      b[m]=1;
    }

     m++;
     count++;
   
    sum=0;
    plus=0;
    j=0;
   
   
    }


    printf("\n");

    for(m=0;m<count;m++)
    {
        if(b[m]==1)
        {
            printf("yes!\n");
        }

        else
        {
            printf("no!\n");
        }

    }
}














            



搜索更多相关主题的帖子: 质因数 
2011-02-16 20:56
pcbaichi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:486
专家分:1185
注 册:2010-11-13
收藏
得分:5 
你想说明什么

免费赠送河蟹一只
2011-02-16 21:00
qishiye007
Rank: 2
等 级:论坛游民
帖 子:19
专家分:20
注 册:2011-2-16
收藏
得分:0 
回复 2楼 pcbaichi
做的不对啊!你看我的截图,要像那样的输出结果、
2011-02-16 21:01
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
又冒出来一个斯密斯数~~

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-02-16 21:09
pcbaichi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:486
专家分:1185
注 册:2010-11-13
收藏
得分:0 
估计是你的分解质因数有问题

免费赠送河蟹一只
2011-02-16 21:15
qishiye007
Rank: 2
等 级:论坛游民
帖 子:19
专家分:20
注 册:2011-2-16
收藏
得分:0 
回复 5楼 pcbaichi
那帮忙改下么!谢谢
2011-02-16 21:20
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
x,s,i;main(t){for(;scanf("%d",&t),x=t;puts(s?"no":"yes")){for(s=0;x;s+=x%10,x/=10);for(i=2;i<=t;i++)for(;t%i==0;t/=i)for(x=i;x;s-=x%10,x/=10);}}

应该是对的

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2011-02-16 21:24
qishiye007
Rank: 2
等 级:论坛游民
帖 子:19
专家分:20
注 册:2011-2-16
收藏
得分:0 
回复 7楼 卧龙孔明
大哥!能具体点么??
2011-02-16 21:30
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
你的代码我没细看,但是如果这个是一个onlinejudge的题,那么你应该把printf("输入数字:\n");以及输出中的感叹号去掉。另外我给你的那份代码应该是对的。

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2011-02-16 21:35
pcbaichi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:486
专家分:1185
注 册:2010-11-13
收藏
得分:0 
#include<stdio.h>
int main(void)
{
    int number,sum,t,i,othersum;
    sum = othersum = t = 0;
    puts("Please enter numbers:");
    while(scanf("%d",&number) != 0)
    {
        t = number;
        while(t)
        {
            sum+=(t%10);
            t/=10;
        }
        for( i = 2 ; number != 1 ; i++)
        {
            if(number%i == 0)
            {
                t = i;
                while(t)
                {
                    othersum+=(t%10);
                    t/=10;
                }
                number/=i;
                i--;
            }
        }
        if(othersum == sum)
            puts("YES");
        else
            puts("NO");
    }

    return 0;
}
你我没看你的程序,看看我写的,找找你错在哪,好吧

免费赠送河蟹一只
2011-02-16 21:40
快速回复:Smith数问题,请大家帮忙啊!谢谢~
数据加载中...
 
   



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

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