NYOJ 225题 小明求素数积

2024-06-11 15:58
文章标签 225 素数 nyoj 小明求

本文主要是介绍NYOJ 225题 小明求素数积,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

应用到的知识点:

1.筛选素数(见素数);

2.大数乘法(见求高精度幂);

要注意的是:后六位不能以0开头!

 

01.   
02.#include<stdio.h>
03.#include<string.h>
04.intmain()
05.{
06.    booln[1000] = {0};//标记所有的素数;
07.    inti, j;
08.    for(i = 2; i * i <= 1000; i ++)
09.    {
10.        if(n[i] == 0)
11.        for(j = i + i; j <= 1000; j += i )
12.        {
13.            n[j] = 1;
14.        }
15.    }
16.    intT;
17.    scanf("%d", &T);
18.    while(T --)
19.    {
20.        intN;
21.        scanf("%d", &N);
22.        intinput[2000] = {0}, temp[2000] = {0}, output[2000] = {2};
23.        intnum,   out = 1, k = 0, m = 0;//in,input中元素个数;out,output中元素的个数;
24.        for(i = 3; i <= N; i ++)//模拟手算;
25.        {
26.            intj = 0,in = 0;
27.            if(n[i] == 0)//针对所有素数;
28.            {
29.                num = i;
30.                while(num != 0)
31.                {
32.                    input[j ++] = num % 10;
33.                    num /= 10;
34.                    in ++;
35.                }//将素数一位一位地,倒序地,存到input数组里面;
36.                for(j = 0; j < in; j ++)
37.                {
38.                    intl = j, s[2000] = {0}, c[2000] = {0};
39.                    for(k = 0; k < out; k ++)
40.                    {
41.                        s[l] = (c[l] + input[j] * output[k]) % 10;  
42.                        c[l +1] = (c[l] + input[j] * output[k]) / 10;   
43.                        temp[l] += s[l];    
44.                        l ++;
45.                    }
46.                    if(c[l] != 0)
47.                    {
48.                        temp[l] = c[l];
49.                        l = l + 1;
50.                    }
51.                    m = l;
52.                }
53.                out = m;
54.                inttempc[2000] = {0};
55.                for(m = 0; m < out; m ++)
56.                {
57.                    output[m] = (temp[m] + tempc[m]) % 10;  
58.                    tempc[m +1] = (temp[m] + tempc[m]) / 10;    
59.                }
60.                if(tempc[m] != 0)
61.                {
62.                    output[m] = tempc[m];
63.                    out = out + 1;
64.                }
65.                memset(temp, 0, sizeof(temp));//将temp清零;
66.            }
67.        }
68.        if(out <= 6)//总位数<=6, >6, 倒序输出;输出时,竟然还不能以零开头!!!
69.        {
70.            for(i = out - 1; i >= 0; i --)
71.                printf("%d", output[i]);
72.        }
73.        else
74.        {
75.            for(i = 5; i >= 0; i --)
76.            {
77.                 if(output[i] != 0)
78.                     break;
79.            }
80.            for(j = i; j >= 0; j --)
81.                printf("%d", output[j]);
82.        }
83.        printf("\n");
84.    }
85.    return0;
86.}


这篇关于NYOJ 225题 小明求素数积的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1051622

相关文章

【JavaSE ⑧】P219 ~ 225 Date类‘’DateFormat类转化Date和字符串;Calendar类获得日历中某值,修改日历,日历转日期

目录 日期时间类1 Date类概述常用方法 2DateFormat类构造方法格式规则常用方法parse方法format方法 3 Calendar类概念获取方式常用方法get/set方法add方法getTime方法 ● 练习1.判断Date不同参数构造的输出2. 用日期时间相关的API,计算一个人已经出生了多少天。3. 获取Calendar对象,输出日历当前年,月,日4. 把日历转换为日期

【牛客网 2017年校招模拟笔试(第一场)】超级素数幂

超级素数幂 描述 如果一个数字能表示为p^q(^表示幂运算)且p为一个素数,q为大于1的正整数就称这个数叫做超级素数幂。现在给出一个正整数n,如果n是一个超级素数幂需要找出对应的p,q。 输入 输入一个正整数n(2 ≤ n ≤ 10^18) 分析 暴力枚举幂q,将n开q次方之后得到p,检查p是否为素数,并且检查p的q次幂是否等于n。 *要注意精度问题,代码待之后补充。

素数伴侣--最大二分匹配

#include<bits/stdc++.h>using namespace std;#define N 100int edge[N][N],cx[N],cy[N];//edge记录两点的关系,如果两点相连,则edge【i】【j】为1int visited[N];//判断该店是否被访问过int nx,ny,res;const int M=60000+100;bool prim[M];

算法题--华为od机试考试(整数对最小和、素数之积、找城市)

目录 整数对最小和 题目描述 注意 输出描述 示例1 输入 输出 说明 解析 答案 素数之积 题目描述 输入描述 输出描述 示例1 输入 输出 说明 示例2 输入 输出 说明 解析 找城市 题目描述 输入 输出 示例1 输入 输出 示例2 输入 输出 说明 解析 答案 整数对最小和 考察排序,数组拍平 题目描述

判断101 - 200之间有多少个素数,并输出所有素数。

题目:判断101 - 200之间有多少个素数,并输出所有素数。 解法一:程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 void main(){long f1, f2;int i;f1 = f2 = 1;for (i = 1; i <= 20; i++){printf("%12ld %12ld", f1, f2);if (i

HDU——2097.sky数、2098.分拆素数和、2099.整除的尾数

目录 2097.sky数 题目描述 运行代码 代码思路 2098.分拆素数和 题目描述 运行代码 代码思路 2099.整除的尾数 题目描述 运行代码 代码思路 2097.sky数 题目描述 Problem - 2097 Problem Description Sky从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这

判断一组数据哪些是素数,并统计一个数组中元素的出现频率

import java.util.HashMap;import java.util.Map;public class Test_A26 {//判断一个数是不是素数public static boolean isPrime(int num){if(num<=1){return false;}for(int i=2;i<=Math.sqrt(num);i++){if(num%i==0){retur

判决素数个数(信息学奥赛一本通-T1409)

【题目描述】 输入两个整数X和Y,输出两者之间的素数个数(包括X和Y)。 【输入】 两个整数X和Y(1 ≤ X,Y ≤ 105)。 【输出】 输出一个整数,表示X,Y之间的素数个数(包括X和Y)。 【输入样例】 1 100 【输出样例】 25 【源程序】 #include<iostream>#include<cmath>using namespace std;bool prime(

素数分布 2:素数定理

素数分布:素数定理 研究素数素数的个数问题, π ( x ) \pi(x) π(x)表示不超过 x x x的素数的个数。 从到素数个数从到素数个数11002511000168101200211001200013520130016200130001273014001630014000120401500174001500011950160014500160001146017001

day10--232.用栈实现队列+ 225. 用队列实现栈+20. 有效的括号+ 1047. 删除字符串中的所有相邻重复项

一、232.用栈实现队列 题目链接:https://leetcode.cn/problems/implement-queue-using-stacks/description/ 文章讲解:https://programmercarl.com/0232.%E7%94%A8%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97.html#%E7%AE%97%E6%