HDU-1333(素数分解)

所有的,今天是没怎么玩就开始敲代码了..我是喜欢敲代码,也是喜欢解决自己的问题,

也是喜欢自己一天一天的进步,但是,我没有那么多的时间陪别人去耗,所以呢,,我现在就得养成那么一个习惯,,

学什么知识点就学一遍,然后无数遍的温习,永远的记住.

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int getsum (int x) // getsum_all_letter的函数,我觉得是一个不错的函数, 
{
	int sum = 0;
	while (x)
	{
		sum += x % 10;
		x /= 10;
	}
	return sum;
}


int main ()
{
	int N;
	while (cin >> N)
	{
		if (N == 0)
		{
			break;
			
		}
		for (int x = N + 1; ; x++)
		{
			int key = x;  // 因为你最后还要把这个数字输出来,所以要提前把初始的数字先存起来. 
			int sum_all_letter = getsum (key); //所求的和; 
			int sum_prime = 0; //分解质因数的和; 
			int flag_prime = 0;//标记是x是不是一个素数; 
			for (int i = 2; i <= sqrt (key * 1.0); i++)
			{
				while (key % i == 0)
				{
					flag_prime++;  //这个就是标记:看初始状态的key是不是个素数,如果是素数就得祛除. 
					sum_prime += getsum (i); //方法很奇特. 
					key /= i;
				}
			}
			if (key != 1)
			{
				sum_prime += getsum (key); // 就是排除除到了最后出现了一个prime number,所以加个语句,判断最后的 
			}								//那个除数是不是素数. 
			if (sum_all_letter == sum_prime && flag_prime != 0) //这个思想是真的很不错的, 
			{
				cout << x << endl;
				break;
			}
		}
	}
	return 0;
}
/*
这道题目真的是个好题目,因为涉及的知识点很多, 有怎么样求一个整数的所有数字的和的算法getsum,
也有最正确的求整数的素因数分解的算法...诶.
这个晚上就是搞这个题目了,真的很恨自己呀,,老是出错,一次一次的敲也不往自己的心里面去.
那这样的学习,你就还不如回宿舍里面好好的休息呢..或者去陪你的女朋友去,我一直都认为,
你一直都这样的告诉你自己,如果自己没有真心的学会,那就别做,,你做也不是白做么??仅仅是浪费自己的时间,
浪费自己的青春.
*/ 
		
			
					


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值