Smith数判定算法

来源:互联网 发布:上海企业网络推广平台 编辑:程序博客网 时间:2024/05/09 20:35
// 08D.cpp : Defines the entry point for the console application.
//244910075@qq.com       youngyuan521@gmail.com


#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#include<math.h>


int _tmain(int argc, _TCHAR* argv[])
{
int prime(int n);
int sum(int n);
int countprime(int n);
int i,num,countsample=0,count=0,array[100];
scanf_s("%d",&num);
while(num)
{
array[countsample++]=num;
scanf_s("%d",&num);
}
for(i=0;i<countsample;i++)
{
if(countprime(array[i])==sum(array[i]))
printf("yes\n");
else
printf("no\n");
}
system("pause");
return 0;
}
//prime:判断一个数是否为素数
int prime(int n)
{
int p,i;
p=(int)sqrt((float)n);
for(i=2;i<=p;i++)
{
if(n%i==0)
{
return 0;
}
}
return 1;
}
//sum:求一个整数各位数之和
int sum(int n)
{
int i,count=0;
for(i=1;n/i!=0;i=10*i)
{
count+=n%(10*i)/i;
}
return count;
}
//countprime: 求一个整数的质因数各位之和
int countprime(int n)
{
int i,count=0;
if(prime(n))
return sum(n);
for(i=2;i<=n;i++)
{
if(prime(i)&&n%i==0)
{
count+=sum(i);
n/=i;
i=1;
}
}
return count;
}
原创粉丝点击