H - 互质数的个数(一)
这里我们定义 \varphi(n)φ(n) 表示所有小于等于 nn 与 nn 互质数的个数。
例如 \varphi(10) = 4φ(10)=4,因为我们可以在 1 \sim 101∼10 中找到 1,3,7,91,3,7,9 与 1010 互质。
输入格式
第一行输入一个整数 tt,表示测试数据组数。
接下来 tt 行,每行有一个整数 nn。
输出格式
对于每组测试数据输出 \varphi(n)φ(n) 。
数据范围
1 \le t \le 100, 1 \le n \le 10^{10}1≤t≤100,1≤n≤1010。
Sample Input
3 2 10 100
Sample Output
1 4 40
这道题会做但是一个超内存一个超时长。
#include<stdio.h>
int gad(int a,int b){return b==0?a:gad(b,a%b);//与取得最小公倍数很像
}
int main()
{int n,pan;int ans;scanf("%d",&n);for(int i=0;i<n;i++){ans=0;scanf("%d",&pan);for(int j=1;j<pan;j++){if(gad(j,pan)==1){ans++;}}printf("%d\n",ans);}return 0;
}
这个会是时间超限
#include<stdio.h>
#include<math.h>
#include<string.h>
int per(int x,int n);
void huzhi(int n );
void yin(int n);
int ans,a[100000000];
void huzhi(int n){for(int i=2;i<n;i++){if(n%i==0){continue;}else{if(per(i,n)){ans++;}}}
}int per(int x,int n){int m=1;for(int i=2;i<=sqrt(n);i++){if(a[i]>0){if(x%i==0){m=0;}}}return m;
}
void yin(int n){for(int i=2;i<=sqrt(n);i++){if(n%i==0){a[i]++;}}
}
int main()
{int n,pan;scanf("%d",&n);for(int i=0;i<n;i++){ans=1;scanf("%d",&pan);yin(pan);huzhi(pan);printf("%d\n",ans);memset(a,0,sizeof(a));}return 0;
}
没写注释可能很难理解,这是我写的最笨的方法,是空间超限
接下来是我大哥(一个童鞋)写的
#include<iostream>
#include<cmath>
#include<cstdlib>
#include<cstdio>
#include<sstream>
#include<bitset>
#include<algorithm>
#include<cctype>
#include<map>
#include<queue>
#include<set>
#include<vector>
#include<functional>
#include<cstring>
#include<stack>
#include<unordered_set>
using namespace std;
typedef long long ll;
ll oula(ll n)
{ll res = n;for (ll i = 2; i <= sqrt(n); i++){if (n % i == 0){res = res / i * (i - 1);while (n % i == 0)n /= i;}}if (n != 1)res = res / n * (n - 1);return res;
}
int main()
{int t;scanf("%d", &t);while (t--){ll n;scanf("%lld", &n);cout << oula(n);cout << '\n';}return 0;
}
H - 互质数的个数(一)相关推荐
- 欧拉函数求互质数的个数
互质数的个数(一) 思路:欧拉函数. 题目链接 import java.util.Scanner;public class Main{public static void main(String[] ...
- 欧拉函数互质数的个数
学习的过程中学到了欧拉函数,做个总结,对数论,对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目,(φ(1)=1)例如φ(8)=4,因为1,3,5,7均和8互质. 互质数的个数 这里我们定义φ ...
- 1~n中与n互质数的个数(欧拉函数)
对于1~n中所有跟n互质的数的个数问题,我们会用欧拉函数来解决. 在开始讲欧拉函数之前,需要先了解质因数分解,传送门:http://t.csdn.cn/tqzvO.ok现在正式开始欧拉函数的推导. 以 ...
- c语言用h指针n个数求和,C语言程序经典示例—-(20)寻找指定元素的指针
#include #define MAX 20 int search(int *apt,/*已知数表的首元指针*/ int n,/*数表中元素个数*/ int key)/*要寻找的值*/ { int ...
- 互质数的个数(欧拉函数)C/C++
欧拉函数 O(n)=n(1-1/P1)(1-1/P2)-(1-1/Pn) ,其中P1-Pn为n的质因子,求出来的结果就是题目所求. 不知道为社么这么写时间超限,下面那种方式写就能过. #include ...
- 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-935 互质数个数
第十四届蓝桥杯集训--练习解题阶段(无序阶段)-ALGO-935 互质数个数 目录 第十四届蓝桥杯集训--练习解题阶段(无序阶段)-ALGO-935 互质数个数 前言 关于数学的疑问 算法训练 互质数 ...
- Android JNI编程(三)——C语言指针的初步认识、指针变量、互换两个数、函数返回多个值...
版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一.什么是指针? 简单来说: 指针就是内存地址 内存地址就是指针. ...
- 求完全二叉树的结点个数
第一次见这个题,看时间小于O(N)..... 只能是二分啊. 但是怎么二分,条件是什么,真的想不到. 后来知道了,我们要找最深一层最右边那个结点.借此确定结点个数. 我们知道,满二叉树的结点个数和深度 ...
- C语言-附加-给一个数求最大质数(完整代码)
质数:只能被1 和本身整除的数 第一层循环,从这个数,开始,一次次递减,查找 ----除数 第二层循环,从2开始,到这个数的一半 -------被除数 完整代码 #incl ...
最新文章
- Boost::context模块callcc的jump_void测试程序
- 合并K个排序链表—leetcode23
- ROS Kinectic 安装问题
- 云计算到底是怎么玩的?
- Idea和redis的坑
- php mysql 备份还原_PHP执行Mysql数据库的备份和还原
- 马云:捐钱很容易 但当所有人行动才能有变化
- 复杂纹理复制及纹理叠加效果
- 中国移动的呼叫转移呼叫等待等设置方法 USSD MMI
- ssrf漏洞修复(ssrf漏洞修复方式)
- 流量、电量、弱网环境怎么测?
- vue实现跑马灯抽奖
- 示波器播放Bad apple坏苹果教程XY模式
- linux veket安装教程,【重写】在U盘上安装使用Veket(Linux)系统
- PMP 考试是一个骗局吗?
- ECMAScript6
- 美团点评暑期实习个人总结
- C语言在坐标轴上输出曲线,C语言图形输出习题
- 大话设计模式读书笔记之状态模式
- C#趣味消消乐小游戏
热门文章
- 学习时间管理,就要我们吃青蛙!这是什么梗?
- Arm-Trusted-Firmware代码分析
- 超实用~使用 Xcode 编译 Swift 源码
- Excel透视表之多表关联
- leetcode之青蛙过河(C++)
- 长图预警,全网最全的23个免费无背景PNG素材网站汇总,让你有用不完的资源!!
- AdFly一个可以赚钱的短链接网站
- Steem夺权告一段落,谁是最后赢家? | 一周问答热议
- 在 Visual Basic .NET 和 Visual C# .NET 中创建控件数组
- 华为nova3e支持鸿蒙系统吗,华为nova 3e值不值得买?HUAWEI nova 3e深度体验评测