素数,回文,统计单词

素数

设计思想

按照除k取余的思想,循环进行除法取余数,余数为零表示可以被其他数整出,则不是素数。

package numbe;

import java.util.Scanner;

public class Prime {

    public static void main(String[] args) {
        int i = 0;
        System.out.println("1. 3-100 2. 任意两数 3. 最大十个和最小十个");
        Scanner sc = new Scanner(System.in);
        i = sc.nextInt();
        switch (i) {
        case 1:
            isprime();
            break;
        case 2:
            isprime1();
            break;
        case 3:
            isprime2();
            break;
        }
    }

    public static void isprime() {
        int n;
        int i = 2;
        int m = 0;
        for (n = 3; n >= 3 && n <= 100; n++) {
            int j = 0;
            if (n % 2 == 0)
                j = 1;
            for (i = 2; i <= Math.sqrt(n); i++) {
                if (n % i == 0)
                    j = 1;
            }
            if (j == 0) {
                m++;
                System.out.print(n + "  ");
                if (m % 5 == 0)
                    System.out.println();
            }
        }
        System.out.println();
    }

    public static void isprime1() {
        System.out.println("请输入两个整数:");
        Scanner sc = new Scanner(System.in);
        int num1, num2;
        System.out.println("number1:");
        num1 = sc.nextInt();
        System.out.println("number2:");
        num2 = sc.nextInt();
        int n;
        int i = 2;
        int m = 0;
        for (n = num1; n >= num1 && n <= num2; n++) {
            int j = 0;
            if (n % 2 == 0)
                j = 1;
            for (i = 2; i <= Math.sqrt(n); i++) {
                if (n % i == 0)
                    j = 1;
            }
            if (j == 0) {
                m++;
                System.out.print(n + "  ");
                if (m % 5 == 0)
                    System.out.println();
            }
        }
    }

    public static void isprime2() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入两个整数:");
        int num1, num2;
        System.out.println("number1:");
        num1 = sc.nextInt();
        System.out.println("number2:");
        num2 = sc.nextInt();
        System.out.println("十个最小:");
        int n;
        int i = 2;
        int m = 0;
        int k = 0;
        int a[] = new int[100];
        for (n = num1; n >= num1 && n <= num2; n++) {
            int j = 0;
            if (n % 2 == 0)
                j = 1;
            for (i = 2; i <= Math.sqrt(n); i++) {
                if (n % i == 0)
                    j = 1;
            }
            if (j == 0) {
                m++;
                a[m] = n;
                if (m <= 10)
                    System.out.print(a[m] + "  ");
            }
        }
        System.out.println();
        System.out.println("十个最大:");
        for (k = m - 10; k <= m; k++) {
            System.out.print(a[m] + "  ");
        }

    }
}

素数

结果截图

总结

输出时换行出现异常,通过更改换行位置实现了正常输出。

使用数组实现了最大十个和最小十个数的输出。

回文

设计思想

从键盘随意输入一个字符串,并将其赋值给一个数组,然后用递归进行,否则从数组的首元素与尾元素进行比较,若相等,则进行i++与j--,不断向中间靠拢,直到达到判断条件i>=j(i=j是输入的字符串的长度为偶数个,i>j是输入的字符串有奇数个),中间若有一次不符合判断,直接跳出递归,结束进程,输出不是回文字符串。(i是指的字符串的第一个元素的下标,j是指的字符串的最后一个元素的下标)

package 回文;

import java.util.Scanner;

public class Huiwen {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s;
        int j;
        int i = 0;
        Scanner input = new Scanner(System.in);
        System.out.println("请输入 一个字符串:");
        s = input.next();
        char a[];
        a = s.toCharArray();
        j = a.length - 1;
        for (int k = 0; k < s.length(); k++) {
            System.out.print(a[k]);
        }
        huiwen(a, j, i);
    }

    public static void huiwen(char a[], int j, int i) {
        if (i >= j) {
            if (a[i] == a[j])

                System.out.println("是回文");
            System.exit(0);
        }
        if (a[i] == a[j])
            huiwen(a, --j, ++i);
        else {
            System.out.println("不是回文!");
            System.exit(0);
        }
    }
}

回文

实验截图

统计单词

设计思路

每遇到段落中的空格和标点,便生成一个新的单词,与之前的单词进行比较,并在总数加一

package 统计单词;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class Statistical {

    public static void main(String[] args){
        File file = new File("D:/test.txt");
        String text =txtString(file);
        findEnglishNum(text);
        }

    public static String txtString(File file){
        StringBuilder result = new StringBuilder();
   try{
       BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
       String s = null;
       while((s = br.readLine())!=null){//使用readLine方法,一次读一行
           result.append(s/*+System.lineSeparator()*/);
       }
       br.close();
   }catch(Exception e){
       e.printStackTrace();
   }
   return result.toString();
}
public static void findEnglishNum(String text){
    //找出所有的单词
    String[] array = {".", " ", "?", "!"};
        for (int i = 0; i < array.length; i++) {
            text = text.replace(array[i],",");
        }
        String[] textArray = text.split(",");
        //遍历 记录
        Map<String, Integer> map = new HashMap<String, Integer>();
        for (int i = 0; i < textArray.length; i++) {
            String key = textArray[i];
            //转为小写
            String key_l = key.toLowerCase();
            if(!"".equals(key_l)){
                Integer num = map.get(key_l);
                if(num == null || num == 0){
                    map.put(key_l, 1);
                }else if(num > 0){
                    map.put(key_l, num+1);
                }
            }
        }
        //输出到控制台
        System.out.println("各个单词出现的频率为:");
        Iterator<String> iter = map.keySet().iterator();
        while(iter.hasNext()){
            String key = iter.next();
            Integer num = map.get(key);
            System.out.println(key + "\t" + num + "次");
        }
    }
}

单词

实验截图

总结

没有实现出现最多次数和最少次数的统计

原文地址:https://www.cnblogs.com/lixv2018/p/9786215.html

时间: 2024-10-13 17:03:38

素数,回文,统计单词的相关文章

05:素数回文数的个数

描述 求11到n之间(包括n),既是素数又是回文数的整数有多少个. 输入 一个大于11小于1000的整数n.输出11到n之间的素数回文数个数. 样例输入 23 样例输出 1 提示回文数指左右对称的数,如:292,333. 来源 06计算概论课 代码 1 略 2 using namespace std; 3 bool sunum(int a) 4 { 5 for(int i=2;i<=sqrt(a);i++) 6 { 7 if(a%i==0) return 0; 8 } 9 return 1; 1

素数回文

素数回文 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15296    Accepted Submission(s): 3421很耗时间, Problem Description xiaoou33对既是素数又是回文的数特别感兴趣.比如说151既是素数又是个回文.现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序

12--c完数/最大公约数/最小公倍数/素数/回文数

完数/最大公约数/最小公倍数/素数/回文数 2015-04-08 10:33 296人阅读 评论(0) 收藏 举报  分类: C/C++(60)  哈尔滨工业大学(8)  版权声明:本文为博主原创文章,未经博主允许不得转载. 1.一个正整数的因子是所有可以整除它的正整数.而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数.例如6=1+2+3(6的因子是1,2,3). [cpp] view plain copy #include <stdio.h> #include <math.h

hdu1431素数回文

Problem Description xiaoou33对既是素数又是回文的数特别感兴趣.比如说151既是素数又是个回文.现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数.(5 <= a < b <= 100,000,000); Input 这里有许多组数据,每组包括两组数据a跟b. Output 对每一组数据,按从小到大输出a,b之间所有满足条件的素数回文数(包括a跟b)每组数据之后空一行. Sample Input 5 500

F题 hdu 1431 素数回文

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1431 素数回文 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15041    Accepted Submission(s): 3359 Problem Description xiaoou33对既是素数又是回文的数特别感兴趣.比如说151

hdu 1431 素数回文(暴力打表,埃托色尼筛法)

这题开始想时,感觉给的范围5 <= a < b <= 100,000,000太大,开数组肯定爆内存,而且100000000也不敢循环,不超时你打我,反正我是不敢循环. 这题肯定得打表,筛素数肯定用埃托色尼筛法(不好意思把大名鼎鼎的埃拉托色尼名字打错了,表打我). 再看当你所找的回文数的位数为偶数时,有如下定理除11外所有偶数位数的回文数都能被11整除,所以所有偶数位数的回文都不是素数. 证明看如下(我手写的) 手机像素渣(凑活着吧)字丑也凑和着. 证完后我们在来说题目给的数据范围 所以当

poj2928:素数回文数的个数

总时间限制: 1000ms 内存限制: 65536kB 描述 判断11到任何一个小于1000大于11的整数之间,既是素数又是回文数的整数的个数. 输入 输入大于11小于1000的整数. 输出 11到输入的这个数之间的既是素数又是回文数的个数. 样例输入 999 543 样例输出 16 10 提示 测试数据有多组,用while()循环输入. 回文数即为左右对称的数,如:292,333. 本题数据规模不大,可以直接先把素数标记出来再进行判断. 代码如下 #include <iostream> #i

HDU1431 素数回文 【暴力】

素数回文 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 10762    Accepted Submission(s): 2498 Problem Description xiaoou33对既是素数又是回文的数特别感兴趣.比如说151既是素数又是个回文.现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a

HDU 1431 素数回文【暴力求解】

/* 题目大意:找一个范围内的所有素数回文数 解题思路:打一个表将1亿以内所有的素数回文数找出来,大概有780个这样子 关键点:暴力求解 解题人:lingnichong 解题时间:2014-08-29 12:02:55 解题体会:如果按一般方法打个素数表,很容易超内存(MLE),所以就先将所有的素数回文全部算出来,再在这个数组里面找在题上那个范围的所有素数回文数 */ 素数回文 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 655

HDU 1431 素数回文(打表+技巧,最大回文素数为9989899!!!)

素数回文 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 17512    Accepted Submission(s): 4033 Problem Description xiaoou33对既是素数又是回文的数特别感兴趣.比如说151既是素数又是个回文.现在xiaoou333想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a