poj1142(质因数分解)

来源:互联网 发布:java计算器程序代码 编辑:程序博客网 时间:2024/06/05 20:16

点击打开链接


simth(n),表示n的所有位上的数的和ans与n的所有质因子的每位上的数字之和sum,相等

主要在于求一个数的质因数

附:

对n分解质因数,应先找到一个最小的质因数,然后按下面的步骤:

1,如果这个质数刚好等于n,则说明分解结束,直接输出就可以

2,如果n不等于这个质数,且能被n整除,则输出这个质数

3,如果不能被整除,则i++;

对n分解质因子
#include<stdio.h>int main(){int n,i;while(scanf("%d",&n)!=EOF){printf("%d=",n);for(i=2;i<=n;i++)while(n!=i){if(n%i==0){printf("%d*",i);n/=i;}else break;}printf("%d\n",n);}return 0;}




#include"stdio.h"#include"string.h"#include"math.h"//#define N 100000001int fun(int a){int i=0;while(a){i+=a%10;a/=10;}return i;}int smith(int n){int i,t;int sum;int ans;ans=fun(n);sum=0;i=2;t=n;while(i<=(int)sqrt(double(n))){while(n%i==0){n/=i;sum+=fun(i);}i++;}if(n!=1)sum+=fun(n);if(sum==ans&&n!=t)return 1;return 0;}int main(){int n;while(scanf("%d",&n)!=-1&&n){while(1){if(smith(++n)){printf("%d\n",n);break;}}}return 0;}


原创粉丝点击