本文主要是介绍Smith数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/** 对于一个正整数n,如果它的各位之和等于它的所有质因数的各位之和,** 则该数被称为Smith数。例如,31257=3*3*23*151,31257 的各位数字之和为**3+1+2+5+7=18,它的所有质因数的各位数字之和为3+3+2+3+1+5+1=18,因此,**31257是一个Smith数。编写一个程序判断输入的正整数是不是Smith数。*/
#include<iostream>
#include<string>
#include<vector> //包含头文件
using namespace std;
int sum(int n); //求一个数的各位之和
int main()
{vector<string> s; //声明一个string类型的向量vector<string>::iterator it;//声明迭代器int n,i;int t1,t2,t=0;cin>>n; //输入要分析的数while(n){int j=n;t1=sum(n); //保存欲分析的数的各位之和for(i=2; i<n; ){if(n%i==0) //i是n的质数{t=t+sum(i);//保存所有质数的各位之和n=n/10;}else{++i;}}t2=t+sum(n);if(t1==t2&&n<j) //是Smith数的判断条件s.push_back("yes");elses.push_back("No");t=0;cin>>n;}for(it=s.begin(); it<s.end(); ++it) //迭代器指向s向量{cout<<(*it)<<endl; //迭代器是一个指针}return 0;
}
int sum(int n)
{int sum=0;for(; n>0; n=n/10){sum+=n%10;}return sum;
}
这篇关于Smith数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!