计算某个数的倍数的java代码?

计算某个数的倍数的java代码?,java,algorithm,Java,Algorithm,在我的示例中,我使用Math.PI,因此它是一个double。这是一个简单的代码,但有一点我不知道如何做: 我希望代码使用用户给定的乘数值a计算sin或cos函数的基本周期X。n值初始化为n=1,是一个整数值 如果(2*pi*n)/a=X的结果低于pi,则n应增加,并应继续增加,直到该数字是pi的倍数,然后打印结果 只是想澄清一下:a是x的乘数,它在函数sin或cos中出现如下情况: cos(ax) sin(ax) 我遇到的问题是计算出这个数字是否是pi的倍数(假设它已经大于pi) 这是我所能得

在我的示例中,我使用Math.PI,因此它是一个double。这是一个简单的代码,但有一点我不知道如何做:

我希望代码使用用户给定的乘数值
a
计算
sin
cos
函数的基本周期
X
n
值初始化为
n=1
,是一个整数值

如果
(2*pi*n)/a=X
的结果低于
pi
,则
n
应增加,并应继续增加,直到该数字是
pi
的倍数,然后打印结果

只是想澄清一下:
a
x
的乘数,它在函数
sin
cos
中出现如下情况:

cos(ax)

sin(ax)

我遇到的问题是计算出这个数字是否是pi的倍数(假设它已经大于pi)

这是我所能得到的,它是不完整的

 public void printSinusoidalPeriod(double multiplier /* this would be `a` */){

    double pi=Math.PI;

    double p = (2 * pi * (double) n) / multiplier;

    while(p<pi){

        if(n%pi==0){

            n=n+1;
            System.out.println(n);
                            p = (2 * pi * (double) n) / multiplier;
        }
    }
    p= (double)Math.round(p * 100) / 100;


    System.out.println("period of function is = " + p + " and n = " + n);
}
public void printSinsualPeriod(双乘数/*这将是'a`*/){
double pi=Math.pi;
双p=(2*pi*(双)n)/乘数;

而(p如果我理解正确的话

 while((2 * pi * n)/a)<pi)
    {
        if(!(n%pi==0))
        {
            n++;
            }
    }

while((2*pi*n)/a)如果我理解正确的话

 while((2 * pi * n)/a)<pi)
    {
        if(!(n%pi==0))
        {
            n++;
            }
    }

while((2*pi*n)/a)如果我正确理解了你的问题,我必须在使用php之前解决类似的问题。不确定javascript的正确语法是什么,但也许你应该保留一个计数器,直到(x/pi)是一个整数,表示它是pi的倍数

我知道这不是正确的代码,但类似于:

    while (!isint(x/pi)) {
    x++;
    }
    if (isint(x/pi)) {
    //CODE TO EXECUTE
    }

如果我正确理解您的问题,我必须在使用php之前解决类似的问题。不确定javascript的正确语法是什么,但也许您应该保留一个计数器,直到(x/pi)是一个整数,表示它是pi的倍数

我知道这不是正确的代码,但类似于:

    while (!isint(x/pi)) {
    x++;
    }
    if (isint(x/pi)) {
    //CODE TO EXECUTE
    }

你似乎在计算什么时候

(2 * pi * n)/a = m * pi where m is some integer multiple.
所以

另一个约束是

(2*pi*n)/a 所以

2*pi*n

要使这两个方程都为真,m必须是小于1的整数,但因为n从1开始,所以它永远不会为真。

(2 * pi * n)/a = m * pi where m is some integer multiple.
所以

另一个约束是

(2*pi*n)/a 所以

2*pi*n

要使这两个方程都为真,m必须是小于1的整数,但因为n从1开始,所以它永远不会为真。

好的,在这里的建议的帮助下,我最后是这样做的

public void printSinusoidalPeriod(double a){

    double pi=Math.PI;
    double p=m*pi;

    while(n<a/2){

        if((double)Math.round((n*pi)%pi)!=0.01){

            n=n+1;

            m = (int) Math.round(((2 * (double) n) / a));
            p= (double)Math.round(m * pi * 100) / 100;
            p=p*n;

        }
    }
    System.out.println("period of function is = " + p + " and n = " + n);
    System.out.println("Check: p/n = " + p/n);
}
public void打印正弦周期(双a){
double pi=Math.pi;
双p=m*pi;

(n好的,下面是我在这里的建议的帮助下最后是怎么做的

public void printSinusoidalPeriod(double a){

    double pi=Math.PI;
    double p=m*pi;

    while(n<a/2){

        if((double)Math.round((n*pi)%pi)!=0.01){

            n=n+1;

            m = (int) Math.round(((2 * (double) n) / a));
            p= (double)Math.round(m * pi * 100) / 100;
            p=p*n;

        }
    }
    System.out.println("period of function is = " + p + " and n = " + n);
    System.out.println("Check: p/n = " + p/n);
}
public void打印正弦周期(双a){
double pi=Math.pi;
双p=m*pi;

虽然(如果我正确理解了您的算法,它将始终停在
n=a/2
。这对a=3或a=1不起作用,这是x的倍数(我将尝试在问题中澄清它,以便问题变得更有意义问题到底是什么?
cos(ax)的周期)
2*Pi/a
,我认为您不需要算法来计算它。如果我正确理解您的算法,它将始终停在
n=a/2
。这对a=3或a=1不起作用,这是x的倍数(我将尝试在问题中澄清它,以便使问题更具意义问题到底是什么?
cos(ax)
的周期是
2*Pi/a
,我认为您不需要算法来计算它。(2*Pi*n)是你的X,我没有碰过它,所以它对你更有意义。如果你也添加了你尝试的代码,这会很有帮助。多位是我正在努力解决的位。我希望得到帮助。我会考虑添加一些代码。请记住这是双位(浮动)重点是,你可能不会精确地降落在一个倍数上。你会想要像
(n%pi
where
GOOD_ough
可能就是一个例子,
0.0000001
。我会让其他人讨论正确的值。如果周期很小,还有其他复杂的问题-那么你对预期函数的边缘情况感到满意吗?啊,这现在有意义了!我不知道你之前在说什么…@achiles.Richard我不需要它精确,但我不想错过边界中应该包含的内容,所以我想我会尝试你的示例谢谢你的提示!我会报告回来!好的,我的编辑如上所述,我想你在@Richard上,但我不确定如何使它工作(2*pi*n)是你的X,我没有碰过它,所以它对你更有意义。如果你也添加了你尝试的代码,这会很有帮助。多位是我正在努力解决的位。我希望得到帮助。我会考虑添加一些代码。请记住这是双位(浮动)重点是,你可能不会精确地降落在一个倍数上。你会想要像
(n%pi
where
GOOD_ough
可能就是一个例子,
0.0000001
。我会让其他人讨论正确的值。如果周期很小,还有其他复杂的问题-那么你对预期函数的边缘情况感到满意吗?啊,这现在有意义了!我不知道你之前在说什么…@achiles.Richard我不需要它精确,但我不想错过边界中应该包含的内容,所以我想我会尝试你的例子谢谢你的提示!我会报告回来!好的,我的编辑如上所述,我想你在@Richard上,但我不确定如何让它工作Whoooooops…逻辑仍然可以转移吗?Whoooops…lo不能吗还是转学?