Smith數判定算法

// 08D.cpp : Defines the entry point for the console application.
//[email protected]       [email protected]


#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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章