Java1.8解代数题

Posted 华仔Ivan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java1.8解代数题相关的知识,希望对你有一定的参考价值。

java FindrootInZnZ
x^2+1=0在Z/2Z中有1个根:[1]
x^2+x+1=0在Z/2Z中有0个根:[]
x^2+1=0在Z/5Z中有2个根:[2,3]
x^2+x+1=0在Z/5Z中有0个根:[]

import java.io.*;
import java.util.*; 
import java.util.function.Function; 

public class FindrootInZnZ
    
    static int Mod(int ret,int n)
        if(ret<0)
            int ret1=ret+(-ret+1)*n;
            return ret1%n;
        
        return ret%n;
    
    
    static Vector Findroot(Function<Integer,Integer> fun,int n)
        Vector ret = new Vector();
        for(int i=0;i<n;i++)
            int newValue=fun.apply(i);
            if(Mod(newValue,n)==0)
                ret.add(i);
            
        
        return ret;
        
    
    static String V2S(Vector v)
        String Str = "[";
        for (int i = 0; i < v.size(); i++)
            Str+=String.format("%d",v.get(i)); 
            if(i<v.size()-1)
                Str+=",";
            
        
        Str += "]";
        return Str;
    
    
    public static void main(String[] args)
        
            Vector v1 = Findroot(x->x*x+1,2);
            String str=V2S(v1);
            System.out.printf("x^2+1=0在Z/2Z中有%d个根:%s\\n",v1.size(),str);
        
        
            Vector v1 = Findroot(x->x*x+x+1,2);
            String str=V2S(v1);
            System.out.printf("x^2+x+1=0在Z/2Z中有%d个根:%s\\n",v1.size(),str);
                    
        
            Vector v1 = Findroot(x->x*x+1,5);
            String str=V2S(v1);
            System.out.printf("x^2+1=0在Z/5Z中有%d个根:%s\\n",v1.size(),str);
        
        
            Vector v1 = Findroot(x->x*x+x+1,5);
            String str=V2S(v1);
            System.out.printf("x^2+x+1=0在Z/5Z中有%d个根:%s\\n",v1.size(),str);
                
     

以上是关于Java1.8解代数题的主要内容,如果未能解决你的问题,请参考以下文章

增根和失根:解方程的逻辑问题

几何学小课堂:解析几何(用代数的方法解决更难的几何题)笛卡尔几何

c语言解线性方程组的编程题 【做的好会多给分】

数学-线性代数导论-#9 Ax=b的解:存在性解法解的数量解的结构

数学-线性代数-#1 表示及解方程组的新视角

一个寻找 SDE 解析解的经验方法——借助 SymPy 计算机代数系统