#include <stdio.h>
void prime(int *p)
{
if(*p<=1) {
*p = -1;
return;
}
int i;
for(i=2;i*i<=*p;i++)
if(*p%i==0) {
*p = -1;
return;
}
}
int main()
{
int a[100];
int i,j=0;
for( i=0; i<100; i++ ) {
a[i] = i+1;
}
for( i=0; i<100; i++ ) {
prime(&a[i]);
}
for( i=0; i<100; i++ ) {
if(a[i]!=-1){
printf("%d ", a[i]);
}
}
return 0;
}
int isPrime(int n){//判断素数 for(int i = 2; i < n; i ++){ if(n % i == 0) return 0; } return 1; } int* allPrime(int scale){ int cnt = 0;//记录有多少个素数,便于之后分配指针内存 for(int i = 2; i <= scale; i ++){//有cnt个素数 if(isPrime(i)) cnt ++; } int* store = malloc(sizeof(int) * cnt);//分配cnt个大小的内存空间 int serial = 0;//将各个素数按顺序存进指针中,serial代表元素 for(int i = 2; i <= scale; i ++){//再次走遍范围内所有数 if(isPrime(i)){//判断是否为素数 * (store + serial) = i;//存进指针 serial ++; } } *(store + cnt) = 0;//最后一个元素的下一位设零 return store;//返回指针 free(store);//释放空间 } int main(){ int scale;//输入范围 scanf("%d", &scale); for(int i = 0; * (allPrime(scale) + i) != 0; i ++){//i代表元素 printf("%d ", * (allPrime(scale) + i));//取出指针中的值 } printf("\n"); }
bool isPrime(int n)
{
if(n<=1)
return false;
for(int i=2;i<=n/2;i++)
{
if(n%i==0)
return false;
}
return true;
}
void main()
{
int i,j,a[100],n=0;
int *p = a;
for(i=0;i<100;i++)
*(p+i) = i+1;
for(i=0;i<100;i++)
{
if(isPrime(*(p+i))
{
*(p+n) = *(p+i);
n++;
}
}
for(i=n;i<100;i++)
*(p+i) = 0;
for(i=0;i<n;i++)
printf("%d ",*(p+i));
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m