【发布时间】:2015-10-27 18:45:04
【问题描述】:
我编写了一个代码,用于检查一个数字是否是快乐素数。快乐的数字是these types of numbers.
这是一个快乐数字的例子:
最后我们得到“1”,这意味着它是一个快乐的素数。
发现我的错误,感谢@resueman 但仍然存在一个问题。 它没有打印第四个输入的输出,即“4 1000”
新代码是:
import java.io.*;
public class Contest {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(reader.readLine());
for(int m =n; m>0; m--)
{
String s = reader.readLine();
String[] sa = s.split(" ");
String number = sa[1];
int squareNumber;
int orignialNum = Integer.parseInt(number);
boolean isPrime = true;
for(int i=2; i<=orignialNum/2;i++)
{
if(orignialNum % i == 0){
isPrime = false;
}
}
if(isPrime)
{
if(orignialNum == 0 || orignialNum == 1 || orignialNum == 2 || orignialNum == 3)
{
System.out.println(sa[0]+" "+orignialNum+" "+"No");
}
else
{
squareNumber = orignialNum;
if(orignialNum<10){
squareNumber = orignialNum*orignialNum;
}
int newNumber = check(squareNumber);
boolean isHappyNumber = isHappy(newNumber);
if(isHappyNumber)
{
System.out.println(sa[0]+" "+orignialNum+" "+"Yes");
}
else
{
System.out.println(sa[0]+" "+orignialNum+" "+"No");
}
}
}
else
{
System.out.println(sa[0]+" "+orignialNum+" "+"No");
}
}
}
public static boolean isHappy(int n)
{
if(n==1)
{
return true;
}
else
{
return false;
}
}
public static int check(int n)
{
if(n>9)
{
String sm = String.valueOf(n);
String[] m = sm.split("");
int[] a = new int[m.length];
for(int i =0; i<a.length; i++)
{
a[i]= Integer.parseInt(m[i]);
}
for(int i =0; i<a.length; i++)
{
a[i]= a[i]*a[i];
}
int sum = 0;
for(int i =0; i<a.length; i++)
{
sum = sum+a[i];
}
return check(sum);
}
else
{
return n;
}
}
}
第一行将采用执行时输入的数量。
我给出的输入是:
4
1 1
2 7
3 383
4 1000
我得到的输出:
1 1 No
2 7 Yes
3 383 No
预期的输出是:
1 1 NO
2 7 YES
3 383 YES
4 1000 NO
不知何故,第四个输出没有出现,对于“383”,它是 显示没有。
请帮忙。
【问题讨论】:
-
为什么在检查幸福感之前要对数字进行平方?这就是让它“快乐快乐”的原因吗?
-
您需要检查数字的平方和。不是数字平方和的平方。对于您的第二个问题,当我运行它时,它会通过所有四个。
-
什么是快乐的快乐素数?是快乐的素数还是快乐的,因为那只是一个快乐的素数。
-
如果您对此有解决方案,请将其发布为答案。不要使用新代码编辑您的问题。
-
stackoverflow 的理念是,其他人可以从您的问题中获利。如果你用答案覆盖你的问题,没有人可以看到最初的问题。将您的解决方案作为答案发布。