博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SGU 102
阅读量:4316 次
发布时间:2019-06-06

本文共 509 字,大约阅读时间需要 1 分钟。

这是SGU 102的一份题解

题目要求找不大于N的自然数中与N互质的数,N的范围是1到10000.

由于N的范围小,可以用直接枚举的方法做,辗转相除求GCD。

但要考虑特殊情况:N=1时,1和它本身互质。

如果数据范围变大,如10^9,则不能用枚举。

用分解质因数的方法做。

用唯一分解定理: n>=2,设p1,p2,p3,......,pn是n的素因子,则不大于它的自然数中与它互质的有 n*(1-1/p1)*(1-1/p2)*......*(1-1/pn)个

n=1,n没有素因子,个数为1(即其本身)

代码如下:

#include "stdio.h"int GCD(int a,int b){	if(!b)return a;	else return GCD(b,a%b);}int main(){	int n,i,cnt=0;	scanf("%d",&n);	for(i=1;i<=n;i++){		if(GCD(n,i)==1)cnt++;	}	printf("%d",cnt);	return 0;}

 

转载于:https://www.cnblogs.com/lostwinder/p/3876089.html

你可能感兴趣的文章
前后台验证字符串长度
查看>>
《算法导论 - 思考题》7-1 Hoare划分的正确性
查看>>
win64 Python下安装PIL出错解决2.7版本 (3.6版本可以使用)
查看>>
获取各种类型的节点
查看>>
表达式求值-201308081712.txt
查看>>
centos中安装tomcat6
查看>>
从Vue.js窥探前端行业
查看>>
学习进度
查看>>
poj3368 RMQ
查看>>
“此人不存在”
查看>>
github.com加速节点
查看>>
解密zend-PHP凤凰源码程序
查看>>
python3 序列分片记录
查看>>
Atitit.git的存储结构and 追踪
查看>>
atitit 读书与获取知识资料的attilax的总结.docx
查看>>
B站 React教程笔记day2(3)React-Redux
查看>>
找了一个api管理工具
查看>>
Part 2 - Fundamentals(4-10)
查看>>
使用Postmark测试后端存储性能
查看>>
NSTextView 文字链接的定制化
查看>>