题目描述
给你一个正整数n,要求你找到最小的x(x>0)满足2^x mod n = 1。
输入格式
输入包含多组测试数据。每行一个正整数,代表n的值。
输出
如果最小的x存在,则输出2^x mod n = 1(注意x和n要用具体的值代替),否则输出2^? mod n = 1。
样例输入
2
5
样例输出
2^? mod 2 = 1
2^4 mod 5 = 1
只要输入的值不是1也不是偶数,就一定有一个具体的x值。不懂的百度,我也不会证。
package acm;
import java.util.Scanner;
public class Main1073
{public static void main(String args[]){
Scanner input = new Scanner(System.in);
while(input.hasNext()){
int a = input.nextInt();
if(a == 0) break;
if(a % 2 == 0 || a == 1)
System.out.println("2^? mod " + a + "= 1");
else
{
int i,p=2;
for (i=2;;i++)
{
if(Math.pow(2, i) % a == 1)
{
System.out.printf("2^" + i + "mod" + a + "= 1");
break;
}
}
}
}
}
}