如何把数组里的质数放在前面,不是质数的交换在后面

如何把数组里的质数放在前面,不是质数的交换在后面,第1张

首先将数组中的数进行删选,将质数及其对应指标读取出来存储到一个向量中,记为a和az

然后,将原数组中az指标集的元素删除,得到非质数数组b

最后连接数组a和b

希望对你有帮助

这个代码估计会好点

public static void main(String[] args) {

        int a[] = { 1, 4, 5, 6, 8, 9, 3, 2, 7, 13 }// 可以用Scanner获取(此处写死方便测试)

        int b[] = new int[a.length]

        // i是循环次数,m是b数组索引最大值,n是b数组索引的最小值

        for (int i = 0, m = b.length - 1, n = 0 i < a.length i++) {

            if (a[i] == 1 || a[i] == 2) {// 如果是1或者是2的话直接保存到数组b的后端

                b[m] = a[i]

                m--

                continue

            }

            for (int j = 2 j < a[i] j++) {

                if (a[i] % j != 0) {// 如果不能被整出就继续循环

                    if (j == a[i] - 1) {

                        b[m] = a[i]

                        m--

                    }

                } else {// 如果能被整出就不是质数,直接保存到数组b的前端

                    b[n] = a[i]

                    n++

                    break

                }

            }

        }

        a = Arrays.copyOfRange(b, 0, b.length)// 将b数组拷贝回a数组

        System.out.println(Arrays.toString(a))// 打印数组

    }

只对函数qiuzs()稍作了改动:

//函数名:int qiuzs(int *a)

//入口参数: 输入15个数据(int a[N] )

//输出数据:a中的质数,保存在zs中,返回质数个数

int zs[15]//存放质数

int qiuzs(int *a)

{

int n,i,s,sum=0

int b[N]

for(n=2n<=Nn++)

{

if (a[n] <2)//过滤无效数字

break

for(i=2i<a[n]i++)

{

if(a[n]%i==0)

{

break

}

}

if(i>=a[n])

{

zs[sum] = a[n]//记录质数

sum++

}

}

return sum

}

个人拙见,仅供参考,希望能帮到您。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8996867.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存