Eddy's research I

本文深入探讨了程序设计方法、算法、数据结构等核心概念,包括面向对象编程、函数式编程、逻辑编程、设计模式等内容,同时涉及排序算法、动态规划、哈希算法等经典算法。此外,还涵盖了数据库理论、代码管理工具、版本控制等方面的知识,为开发者提供全面的技术指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Eddy's research I

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5612    Accepted Submission(s): 3354


Problem Description
Eddy's interest is very extensive, recently he is interested in prime number. Eddy discover the all number owned can be divided into the multiply of prime number, but he can't write program, so Eddy has to ask intelligent you to help him, he asks you to write a program which can do the number to divided into the multiply of prime number factor .

 

Input
The input will contain a number 1 < x<= 65535 per line representing the number of elements of the set.
 

Output
You have to print a line in the output for each entry with the answer to the previous question.
 

Sample Input
11 9412
 

Sample Output
11 2*2*13*181
 

Author
eddy



#include<iostream>
#include<cstring>
#include<cstdio>
#include<ctime>
#include<algorithm>
using namespace std;
#define M 100000
bool visit[M];
int prime[M];
void table()
{
    memset(visit,true,sizeof(visit));
    int num = 0;
    for (int i = 2; i <= M; ++i)
    {
        if (visit[i] == true)
        {
            num++;
            prime[num] = i;
        }
        for (int j = 1; ((j <= num) && (i * prime[j] <= M));  ++j)
        {
            visit[i * prime[j]] = false;
            if (i % prime[j] == 0) break; //点睛之笔
        }
    }
}

int main()
{
    memset(prime, 0, sizeof(prime));
    int a[M];
    int count = 0;
    table();
    int i,j,k,n;
    //for(int i=1;i<7000    ;i++)
    while(scanf("%d",&n)!=EOF)
    {
        j=0;
        for(i=1;i<=70000;)
        {
            if(n==prime[i])
            {
                a[j]=prime[i];
                break;
            }
            else
            {
              if(n%prime[i]==0)
              {
                  n=n/prime[i];
                  a[j]=prime[i];
                  j++;

              }
              else
              {
                  i++;
              }
            }
        }
       // printf("jjjjj%d\n",j);

        if(j==0)
        {
            printf("%d\n",a[j]);
        }
        else
        {
          for(k=0;k<j;k++)
          printf("%d*",a[k]);
         printf("%d\n",a[j]);
        }

    }
    return 0;
}


 

Recommend
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值