Java实现 蓝桥杯 算法提高 欧拉函数(数学)
试题 算法提高 欧拉函数
问题描述
  老师出了一道难题,小酱不会做,请你编个程序帮帮他,奖金一瓶酱油:
  从1—n中有多少个数与n互质?
  |||||╭══╮ ┌═════┐
  ╭╯让路║═║酱油专用车║
  ╰⊙═⊙╯ └══⊙═⊙═(坑爹的题面格式化,害得我用‘|’来代替空格,复制到记事本上看就变成正版的了)
输入格式
  输入共一行,表示一个整数n。
输出格式
  输出共一行,表示从1—n中与n互质的数的个数。
样例输入
30
样例输出
8
数据规模和约定
  60%的数据≤10^6
  100%的数据≤2*10^9
PS:
这个题先附上暴力代码,只能过90的分,后面有大佬的欧拉函数的解法
 
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.close();
        ArrayList<Integer> list = new ArrayList<Integer>();
        int temp = n;
        for (int i = 2; temp != 1; i++) {
            if (temp % i == 0) list.add(i);
            while (temp % i == 0) {
                temp /= i;
            }
        }
        int count = 0;
        //   System.out.println(list);
        boolean[] bool = new boolean[n];
        for (int i : list) {
            int index = 1;
            while (index * i < n) {
                bool[index * i] = true;
                index++;
            }
        }
        for (int i = 1; i < n; i++) {
            if (!bool[i]) {
                count++;
            }
        }
//        A:
//        for (int i = 1; i < n; i++) {
//            for (int j : list){
//                if(i % j == 0){
//                    continue A;
//                }
//            }
//            count++;
//        }
        System.out.println(count);
    }
}
 
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        long ans = n;
        for (int i = 2; i * i <= n; i++) {//优化 O(sqrt(n)) 不过要在出口 if(n>1)ans/n*(n-1) O(n)不用
            if (n % i == 0) {
                ans = ans / i * (i - 1);////n*(1-(1/p))转化为n/p*(p-1)
                while (n % i == 0)
                    n /= i;
            }
        }
        if (n > 1)
            System.out.println(ans / n * (n - 1));
        else
            System.out.println(ans);
    }
}
Java实现 蓝桥杯 算法提高 欧拉函数(数学)的更多相关文章
- Java实现 蓝桥杯VIP 算法提高 欧拉函数
		算法提高 欧拉函数 时间限制:1.0s 内存限制:512.0MB 说明 2016.4.5 已更新试题,请重新提交自己的程序. 问题描述 给定一个大于1,不超过2000000的正整数n,输出欧拉函数,p ... 
- Java实现 蓝桥杯 算法提高 进攻策略加强(暴力)
		试题 算法提高 进攻策略加强 问题描述 植物大战僵尸这款游戏中,还有一个特别的玩儿法:玩家操纵僵尸进攻植物. 首先,僵尸有m种(每种僵尸都是无限多的),玩家可以选择合适的僵尸来进攻.使用第i种僵尸需要 ... 
- Java实现 蓝桥杯 算法提高 小X的购物计划
		试题 算法提高 小X的购物计划 问题描述 小X打算去超市shopping.小X没什么钱,只有N元.超市里有M种物品,每种物品都需要money,在小X心中有一个重要度.有的物品有无限件,有的物品只有几件 ... 
- Java实现 蓝桥杯 算法提高 快乐司机
		算法提高 快乐司机 时间限制:1.0s 内存限制:256.0MB 问题描述 "嘟嘟嘟嘟嘟嘟 喇叭响 我是汽车小司机 我是小司机 我为祖国运输忙 运输忙" 这是儿歌"快乐的 ... 
- Java实现 蓝桥杯 算法提高 天天向上(DP)
		试题 算法提高 天天向上 问题描述 A同学的学习成绩十分不稳定,于是老师对他说:"只要你连续4天成绩有进步,那我就奖励给你一朵小红花."可是这对于A同学太困难了.于是,老师对他放宽 ... 
- Java实现 蓝桥杯 算法提高 计算超阶乘(暴力)
		试题 算法提高 计算超阶乘 问题描述 计算1*(1+k)(1+2k)(1+3k)-(1+n*k-k)的末尾有多少个0,最后一位非0位是多少. 输入格式 输入的第一行包含两个整数n, k. 输出格式 输 ... 
- Java实现蓝桥杯 算法提高 线段和点
		算法提高 线段和点 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 有n个点和m个区间,点和区间的端点全部是整数,对于点a和区间[b,c],若a>=b且a<=c,称点a满 ... 
- Java实现蓝桥杯-算法提高 P1003
		算法提高 P1003 时间限制:1.0s 内存限制:256.0MB 作为一名网络警察,你的任务是监视电子邮件,看其中是否有一些敏感的关键词.不过,有些狡猾的犯罪嫌疑人会改变某些单词的字母顺序,以逃避检 ... 
- Java实现蓝桥杯 算法提高 八皇后 改
		**算法提高 8皇后·改** 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8的棋 ... 
随机推荐
- u-boot 移植(二)创建新平台的板级支持
			u-boot 移植(二)创建新平台的板级支持 soc:s3c2440 board:jz2440 uboot:u-boot-2016.11 toolchain:gcc-linaro-7.4.1-2019 ... 
- Python语法学习第三天--元组
			元组:元组与列表相似,但是元组不能随意修改 ①创建元组 使用圆括号,用逗号隔开 空元组tuple1=()元组中只包含一个元素时,需要在元素后面添加逗号#逗号是关键tuple1=(1,) 当tuple1 ... 
- A~Z;26个字母美式
			26个字母美式读法 音频下载地址: 链接:https://pan.baidu.com/s/1KOlxNCydgtsODQZMT9JFJg 提取码:8a9g 
- Android 编译系统
			1,Makefile编译方式 TARGET: PREREQUISITES COMMANDS 1,TARGET是需要生成的目标文件,PREREQUISTIES代表了目标所依赖的所有文件. 2,简单的Ma ... 
- python  mysql数据库基本操作方法
			实现:使用Python实现用户登录,如果用户存在(数据库表中存在)则登录成功(假设该用户已在数据库中) import pymysql username = input('输入用户名:').strip( ... 
- elment新增el-select的全选功能
			不废话,效果如图 代码实现 平生不爱啰嗦,功能如上已实现. 
- Golang源码学习:使用gdb调试探究Golang函数调用栈结构
			本文所使用的golang为1.14,gdb为8.1. 一直以来对于函数调用都仅限于函数调用栈这个概念上,但对于其中的详细结构却了解不多.所以用gdb调试一个简单的例子,一探究竟. 函数调用栈的结构(以 ... 
- 201771010128王玉兰《面向对象程序设计(Java)》课程学习总结
			1.实验目的与要求 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设计特点: (3) 综合掌握java GUI 程序设计结构: (4) 综合掌握java多线程编程模型: ... 
- Gym101635K Blowing Candles
			题目链接:http://codeforces.com/gym/101635 题目大意: 推荐一篇文章:https://blog.csdn.net/wang_heng199/article/detail ... 
- vue 基于elment UI tree 组件实现带引导、提示线
			实现样式 准备工作,先实现 树状组件的基本样式 <span style="height:500px; display:block; overflow-y:auto;" cla ... 
