Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

麻烦看看为什么WA

Posted by tarzanZ at 2007-02-20 15:46:38 on Problem 1142
#include<iostream>
#include<math.h>
using namespace std;

#define MAX 10001
int prime[MAX]={0};//素数表,为0的是素数,1的为非素数

void getprime()//求出素数表
{
	prime[0]=1;
	prime[1]=1;//1不是素数
	int i,stop=100,j;
	for(i=2;i<=stop;i++)
	{
		if(prime[i]==0)
		{	
			j=i*2;
			while(j<=MAX)
			{
				prime[j]=1;
				j=j+i;
			}
		}
	}
}

int digit_sum(int p)
{
	int sum=0;
	while(p>=10)
	{
		sum=sum+p%10;
		p=p/10;
	}
	sum=sum+p;
	return sum;
}
int fenjie(int p)
{
	int i,now=p,sum=0,stop;
	stop=sqrtf((float)p);
	for(i=2;i<=stop;i++)
	{
		if(prime[i]==0)
		{
			while(now%i==0)
			{
				now=now/i;
				sum+=i;
			}
			if(now==1)
				break;
		}
	}
	if(now!=1)
		sum=sum+digit_sum(now);
	return sum;
}
int main()
{
	getprime();
	int i;
	int begin;
	while(scanf("%d",&i))
	{
		if(i==0)
			break;
		for(begin=i+1;;begin++)
		{
			//检查是否为素数
			int j,j_stop;
			bool isprime=true;
			j_stop=sqrtf((float)begin);
			for(j=2;j<=j_stop;j++)
			{
				if(begin%j==0)
				{
					isprime=false;
					break;
				}
			}
			
			if(isprime)
				continue;
			else
			{
				int fen_sum=fenjie(begin);
				int dig_sum=digit_sum(begin);
				if(fen_sum==dig_sum)
				{
					printf("%d\n",begin);
					break;
				}
			}
		}
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator