求两个数a和b的最大公约数
int a=s.nextInt(); int b=s.nextInt(); int c,d; while (true){ if(a>b){ c=a; d=b; }else { c=b; d=a; } a=c%d; b=d; if(a==0){ System.out.println(b); break; } }
a和b的最小公倍数求法,a乘b再除以它们的最大公约数
求一个数n的最大质因数
int n=s.nextInt(); int i,ans=0; for( i=2;i*i<=n;i++){ while (n%i==0){ ans=i; n/=i; } } if(n>1){ ans=n; } System.out.println(ans);
int n=s.nextInt(); int k = 2; while (n > 1){ if (n % k == 0){ n /= k; } else{ k++; } } System.out.println(ans);
求小于等于n的所有质数
int n=s.nextInt(); int[] primes=new int[n+1]; boolean[] st=new boolean[n+1]; int count=0; for(int i=2;i<=n;i++){ if(!st[i])primes[count++]=i; for(int j=0;i*primes[j]<=n;j++){ st[i*primes[j]]=true; if(i%primes[j]==0)break; } } System.out.println(Arrays.toString(primes));