然后,将原数组中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
}
个人拙见,仅供参考,希望能帮到您。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)